Spring Remoting avec Hessian et Burlap

1. Vue d'ensemble

Dans l'article précédent intitulé «Introduction à Spring Remoting avec HTTP Invokers», nous avons vu à quel point il est facile de configurer une application client / serveur qui exploite l'invocation de méthode à distance (RMI) via Spring Remoting .

Dans cet article, nous montrerons comment Spring Remoting prend en charge l'implémentation de RMI en utilisant Hessian et Burlap à la place.

2. Dépendances de Maven

Les deux hessois et Jute sont fournis par la bibliothèque suivante que vous devrez inclure explicitement dans votre pom.xml fichier:

 com.caucho hessian 4.0.38 

Vous pouvez trouver la dernière version sur Maven Central.

3. Hesse

Hessian est un protocole binaire léger de Caucho , le fabricant du serveur d'applications Resin . Des implémentations en hesse existent pour plusieurs plates-formes et langages, Java inclus.

Dans les sous-sections suivantes, nous modifierons l'exemple de «réservation de cabine» présenté dans l'article précédent pour que le client et le serveur communiquent en utilisant Hessian au lieu du protocole basé sur Spring Remote HTTP .

3.1. Exposer le service

Exposons le service en configurant un RemoteExporter de type HessianServiceExporter , remplaçant le HttpInvokerServiceExporter précédemment utilisé:

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

Nous pouvons maintenant démarrer le serveur et le maintenir actif pendant que nous préparons le client.

3.2. Application client

Implémentons le client. Là encore, les modifications sont assez simples - nous devons remplacer le HttpInvokerProxyFactoryBean par un HessianProxyFactoryBean :

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

Exécutons maintenant le client pour le connecter au serveur en utilisant Hessian .

4. Toile de jute

Burlap est un autre protocole léger de Caucho , basé sur XML . Caucho a cessé de le maintenir il y a longtemps, et pour cela, son support est obsolète dans les dernières versions de Spring, même s'il est déjà présent.

Par conséquent, vous ne devriez raisonnablement continuer à utiliser Burlap que si vous avez des applications qui sont déjà distribuées et qui ne peuvent pas facilement être migrées vers une autre implémentation de Spring Remoting .

4.1. Exposer le service

Nous pouvons utiliser Burlap exactement de la même manière que nous avons utilisé Hessian - il suffit de choisir l'implémentation appropriée:

@Bean(name = "/booking") RemoteExporter burlapService() { BurlapServiceExporter exporter = new BurlapServiceExporter(); exporter.setService(new CabBookingServiceImpl()); exporter.setServiceInterface( CabBookingService.class ); return exporter; }

Comme vous pouvez le voir, nous venons de changer le type d'exportateur de HessianServiceExporter à BurlapServiceExporter. Tous les codes de configuration peuvent rester inchangés.

Encore une fois, démarrons le serveur et continuons à le faire fonctionner pendant que nous travaillons sur le client.

4.2. Implémentation client

Nous pouvons également échanger Hessian contre Burlap côté client, en remplaçant HessianProxyFactoryBean par BurlapProxyFactoryBean :

@Bean public BurlapProxyFactoryBean burlapInvoker() { BurlapProxyFactoryBean invoker = new BurlapProxyFactoryBean(); invoker.setServiceUrl("//localhost:8080/booking"); invoker.setServiceInterface(CabBookingService.class); return invoker; }

Nous pouvons maintenant exécuter le client et voir comment il se connecte avec succès à l'application serveur à l'aide de Burlap .

5. Conclusion

Avec ces exemples rapides, nous avons montré comment il est facile avec Spring Remoting de choisir parmi différentes technologies pour implémenter l'appel de méthode à distance et comment vous pouvez développer une application en ignorant complètement les détails techniques du protocole utilisé pour représenter l'invocation de méthode à distance.

Comme d'habitude, vous trouverez les sources sur GitHub, avec des clients pour Hessian et Burlap et le test JUnit CabBookingServiceTest.java qui se chargera d'exécuter à la fois le serveur et les clients.