Рубрики
Без рубрики

Пружинный пульт с мешковиной и мешковиной

Краткое практическое руководство по внедрению RMI в весеннее дистанционное управление с использованием мешковины и мешковины.

Автор оригинала: baeldung.

1. Обзор

В предыдущей статье под названием “Введение в Spring Remoting с помощью HTTP-вызывателей” мы видели, как легко настроить клиент-серверное приложение, которое использует вызов удаленного метода (RMI) через Spring Remoting .

В этой статье мы покажем как Spring Remoting поддерживает реализацию RMI с использованием Hessian и 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 Remoting .

4.1. Предоставление Услуги

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

@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 выбрать одну из различных технологий для реализации вызова удаленного метода и как вы можете разработать приложение, совершенно не зная технических деталей протокола, используемого для представления вызова удаленного метода.

Как обычно, вы найдете источники на GitHub , с клиентами как для Hessian , так и для Burlap и JUnit test CabBookingServiceTest.java это позаботится о запуске как сервера, так и клиентов.