Главная » Spring » Экспортирование компонентов в виде служб HTTP Invoker Spring

0

Чтобы экспортировать компонент в виде службы RMI, мы исполь- зовали компонент RmiServiceExporter. Чтобы экспортировать его в виде службы Hessian, мы использовали компонент HessianServiceExporter. А чтобы экспортировать его в виде службы Burlap, мы использо- вали компонент BurlapServiceExporter. Продолжая этот ряд, совер- шенно неудивительно, что для экспортирования компонента в виде службы Spring HTTP Invoker необходимо использовать компонент HttpInvokerServiceExporter.

То есть, чтобы экспортировать службу Spitter в виде службы HTTP Invoker, необходимо настроить компонент HttpInvokerServiceExporter, как показано ниже:

<bean  class=

"org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter" p:service-ref="spitterService" p:serviceInterface="com.habuma.spitter.service.SpitterService" />

У вас не возникло ощущения дежавю? Не так-то просто найти различия между этим объявлением компонента и объявлением в раз- деле 11.3.2. Единственное отличие – имя класса: HttpInvokerService- Exporter. Во всем остальном настройки этого компонента-экспортера ничем не отличаются от настроек других экспортеров службы.

Как показано на рис. 11.8, компонент HttpInvokerServiceExporter действует практически так же, как компоненты HessianServiceExporter и BurlapServiceExporter. Это – контроллер Spring MVC, принимаю- щий запросы от клиента через DispatcherServlet и преобразующий эти запросы в вызовы методов POJO, реализующего службу.

Рис. 11.8. HttpInvokerServiceExporter

действует практически так же, как родственные ему компоненты Hessian и Burlap, принимая запросы и от компонента DispatcherServlet и преобразуя их в вызовы методов компонента,

управляемого фреймворком Spring

Поскольку компонент HttpInvokerServiceExporter является контрол- лером Spring MVC, необходимо настроить обработчик адресов URL, отображающий эти адреса URL на службу, подобно компонентам- экспортерам Hessian и Burlap:

<bean id="urlMapping" class=

"org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property  name="mappings">

<value>

/spitter.service=httpInvokerSpitterService

</value>

</property>

</bean>

Кроме того, как и прежде, нужно убедиться, что объявлению ком- понента DispatcherServlet в файле web.xml сопутствует следующий элемент <servlet-mapping>:

<servlet-mapping>

<servlet-name>spitter</servlet-name>

<url-pattern>*.service</url-pattern>

</servlet-mapping>

При таких настройках служба Spitter будет доступна по тому же адресу URL /spitter.service, который использовался для экспорти- рования службы с использованием решений Hessian и Burlap.

Выше уже демонстрировалось, как пользоваться удаленными службами RMI, Hessian и Burlap. А теперь переделаем клиента Spitter так, чтобы он использовал только что экспортированную службу HTTP Invoker.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии