Printemps Remoting avec Hesse et Toile de Jute

Printemps Remoting avec Hesse et Toile de Jute

1. Vue d'ensemble

Dans lesprevious article titled “Intro to Spring Remoting with 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) viaSpring Remoting.

Dans cet article, nous montrerons à la placehow Spring Remoting supports the implementation of RMI using Hessian and Burlap.

2. Dépendances Maven

LesHessian etBurlap sont fournis par la bibliothèque suivante que vous devrez inclure explicitement dans votre fichierpom.xml:


    com.caucho
    hessian
    4.0.38

Vous pouvez trouver la dernière version surMaven Central.

3. Toile de jute

Hessian est un protocole binaire léger deCaucho, les fabricants du serveur d'applications deResin. Les implémentations deHessian 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 utilisantHessian au lieu du protocole basé surSpring Remote HTTP.

3.1. Exposer le service

Exposons le service en configurant unRemoteExporter de typeHessianServiceExporter, en remplaçant lesHttpInvokerServiceExporter précédemment utilisés:

@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 la préparation du client.

3.2. Application client

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

@Configuration
public class HessianClient {

    @Bean
    public HessianProxyFactoryBean hessianInvoker() {
        HessianProxyFactoryBean invoker = new HessianProxyFactoryBean();
        invoker.setServiceUrl("http://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 utilisantHessian.

4. Toile de jute

Burlap est un autre protocole léger deCaucho, basé surXML. Caucho a cessé de le maintenir il y a longtemps, et pour cela, sa prise en charge 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 à utiliserBurlap que si vous avez des applications qui sont déjà distribuées et qui ne peuvent pas être facilement migrées vers une autre implémentation deSpring Remoting.

4.1. Exposer le service

Nous pouvons utiliserBurlap 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 deHessianServiceExporter àBurlapServiceExporter.. Tout le code de configuration peut rester inchangé.

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 permuterHessian pourBurlap côté client, en remplaçantHessianProxyFactoryBean parBurlapProxyFactoryBean:

@Bean
public BurlapProxyFactoryBean burlapInvoker() {
    BurlapProxyFactoryBean invoker = new BurlapProxyFactoryBean();
    invoker.setServiceUrl("http://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 en utilisantBurlap.

5. Conclusion

Avec ces exemples rapides, nous avons montré comment il est facile avecSpring Remoting de choisir parmi différentes technologies pour implémenter l'invocation 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 la méthode à distance. invocation.

Comme d'habitude, vous trouverez les sourcesover on GitHub, avec des clients à la fois pourHessian etBurlap et le testJUnitCabBookingServiceTest.java qui se chargera d'exécuter les deux le serveur et les clients.