Весеннее дистанционное взаимодействие с гессианом и мешковиной

Весеннее дистанционное взаимодействие с гессеном и мешковиной

1. обзор

Вprevious article titled “Intro to Spring Remoting with HTTP Invokers” мы увидели, насколько легко настроить клиент-серверное приложение, которое использует удаленный вызов метода (RMI) черезSpring Remoting.

В этой статье вместо этого мы покажемhow Spring Remoting supports the implementation of RMI using Hessian and Burlap.

2. Maven Зависимости

ИHessian, иBurlap предоставляются следующей библиотекой, которую вам нужно будет явно включить в ваш файлpom.xml:


    com.caucho
    hessian
    4.0.38

Вы можете найти последнюю версию наMaven Central.

3. гессенский

Hessian - это легкий двоичный протокол отCaucho, создателя сервера приложенийResin. РеализацииHessian существуют для нескольких платформ и языков, включая Java.

В следующих подразделах мы изменим пример «бронирования такси», представленный в предыдущей статье, чтобы клиент и сервер взаимодействовали с использованиемHessian вместо протокола на основеSpring Remote HTTP.

3.1. Разоблачение службы

Давайте представим службу, настроивRemoteExporter типаHessianServiceExporter, заменив ранее использованныйHttpInvokerServiceExporter:

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

Теперь мы можем запустить сервер и поддерживать его активным, пока мы готовим клиента.

3.2. Клиентское приложение

Реализуем клиента. И здесь модификации довольно просты - нам нужно заменитьHttpInvokerProxyFactoryBean наHessianProxyFactoryBean:

@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"));
    }
}

Теперь запустим клиент, чтобы он подключился к серверу с помощьюHessian.

4. Мешковина

Burlap - еще один облегченный протокол изCaucho, основанный наXML. Caucho перестал поддерживать его давным-давно, поэтому его поддержка в новейших выпусках Spring устарела, хотя она уже присутствует.

Поэтому вам следует разумно продолжать использоватьBurlap, только если у вас есть приложения, которые уже распространены и которые не могут быть легко перенесены в другую реализациюSpring Remoting.

4.1. Разоблачение службы

Мы можем использоватьBurlap точно так же, как мы использовалиHessian - нам просто нужно выбрать правильную реализацию:

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

Как видите, мы только что изменили тип экспортера сHessianServiceExporter наBurlapServiceExporter.. Весь код настройки можно оставить без изменений.

Опять же, давайте запустим сервер и оставим его работать, пока мы работаем над клиентом.

4.2. Реализация клиента

Мы также можем заменитьHessian наBurlap на стороне клиента, заменивHessianProxyFactoryBean наBurlapProxyFactoryBean:

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

Теперь мы можем запустить клиент и посмотреть, как он успешно подключается к серверному приложению, используяBurlap.

5. Заключение

На этих быстрых примерах мы показали, как легко с помощьюSpring Remoting выбирать среди различных технологий для реализации удаленного вызова метода и как вы можете разработать приложение, не зная о технических деталях протокола, используемого для представления удаленного метода. призыв.

Как обычно, вы найдете источникиover on GitHub с клиентами как дляHessian, так и дляBurlap, а также для тестаJUnitCabBookingServiceTest.java, который позаботится о запуске обоих сервер и клиенты.