Spring Remoting met jute en jute

1. Overzicht

In het vorige artikel met de titel "Inleiding tot Spring Remoting met HTTP Invokers" hebben we gezien hoe gemakkelijk het is om een ​​client / server-applicatie op te zetten die gebruikmaakt van Remote Method Invocation (RMI) via Lente Remoting.

In dit artikel zullen we het laten zien hoe Lente Remoting ondersteunt de implementatie van RMI met behulp van Hessiaan en Jute in plaats daarvan.

2. Maven afhankelijkheden

Beide Hessiaan en Jute worden geleverd door de volgende bibliotheek die u expliciet in uw pom.xml het dossier:

 com.caucho jute 4.0.38 

U kunt de nieuwste versie vinden op Maven Central.

3. Hessisch

Hessiaan is een lichtgewicht binair protocol van Caucho, de makers van de Hars applicatie server. Hessiaan implementaties bestaan ​​voor verschillende platforms en talen, inclusief Java.

In de volgende paragrafen zullen we het voorbeeld van "taxiboeking" in het vorige artikel wijzigen om de client en de server te laten communiceren met Hessiaan in plaats van de Spring Remote HTTP gebaseerd protocol.

3.1. De service blootleggen

Laten we de service blootleggen door een RemoteExporter van het type HessianServiceExporter, ter vervanging van de HttpInvokerServiceExporter eerder gebruikt:

@Bean (name = "/ booking") RemoteExporter bookingService () {HessianServiceExporter exporter = nieuwe HessianServiceExporter (); exporter.setService (nieuwe CabBookingServiceImpl ()); exporter.setServiceInterface (CabBookingService.class); terugkeer exporteur; }

We kunnen nu de server starten en actief houden terwijl we de client voorbereiden.

3.2. Client-applicatie

Laten we de klant implementeren. Ook hier zijn de wijzigingen vrij eenvoudig - we moeten het HttpInvokerProxyFactoryBean met een HessianProxyFactoryBean:

@Configuration openbare klasse HessianClient {@Bean openbare HessianProxyFactoryBean hessianInvoker () {HessianProxyFactoryBean invoker = nieuwe HessianProxyFactoryBean (); invoker.setServiceUrl ("// localhost: 8080 / boeking"); invoker.setServiceInterface (CabBookingService.class); terugkeer invoker; } public static void main (String [] args) gooit BookingException {CabBookingService service = SpringApplication.run (HessianClient.class, args) .getBean (CabBookingService.class); out.println (service.bookRide ("13 Seagate Blvd, Key Largo, FL 33037")); }}

Laten we nu de client starten om verbinding te maken met de server met Hessiaan.

4. Jute

Jute is een ander lichtgewicht protocol van Caucho, gebaseerd op XML. Caucho stopte met het onderhouden ervan een lange tijd geleden, en daarom is de ondersteuning ervan verouderd in de nieuwste Spring-releases, ook al is het al aanwezig.

Daarom moet u redelijkerwijs blijven gebruiken Jute alleen als u applicaties heeft die al gedistribueerd zijn en die niet gemakkelijk naar een andere kunnen worden gemigreerd Lente Remoting implementatie.

4.1. De service blootleggen

We kunnen gebruiken Jute precies op dezelfde manier als we gebruikten Hessiaan - we moeten gewoon de juiste implementatie kiezen:

@Bean (name = "/ booking") RemoteExporter juteService () {BurlapServiceExporter exporter = nieuwe BurlapServiceExporter (); exporter.setService (nieuwe CabBookingServiceImpl ()); exporter.setServiceInterface (CabBookingService.class); terugkeer exporteur; }

Zoals u kunt zien, hebben we zojuist het type exporteur gewijzigd van HessianServiceExporter naar JuteServiceExporter. Alle setup-code kan ongewijzigd worden gelaten.

Nogmaals, laten we de server starten en laten we hem draaien terwijl we aan de client werken.

4.2. Client implementatie

We kunnen ook ruilen Hessiaan voor Jute aan de kant van de klant, overstappen HessianProxyFactoryBean met JuteProxyFactoryBean:

@Bean openbaar BurlapProxyFactoryBean juteInvoker () {BurlapProxyFactoryBean invoker = nieuwe BurlapProxyFactoryBean (); invoker.setServiceUrl ("// localhost: 8080 / boeking"); invoker.setServiceInterface (CabBookingService.class); terugkeer invoker; }

We kunnen nu de client starten en zien hoe deze met succes verbinding maakt met de servertoepassing met Jute.

5. Conclusie

Met deze snelle voorbeelden hebben we laten zien hoe gemakkelijk het is Lente Remoting om te kiezen uit verschillende technologieën om het aanroepen van externe methoden te implementeren en hoe u een applicatie kunt ontwikkelen zonder op de hoogte te zijn van de technische details van het protocol dat wordt gebruikt om de aanroep van externe methoden weer te geven.

Zoals gewoonlijk vind je de bronnen op GitHub, met clients voor beide Hessiaan en Jute en de JUnit test CabBookingServiceTest.java dat zorgt voor het draaien van zowel de server als de clients.