Главная » Spring » Доступ к службам HTTP Invoker Spring

0

Рискуя напомнить заезженную пластинку, я все же должен со- общить, что пользование службой HTTP Invoker очень напоминает все, что было показано выше. Как показано на рис. 11.9, компонент HttpInvokerProxyFactoryBean играет ту же роль, что и другие прокси- объекты удаленных служб, представленные выше в этой главе.

Рис. 11.9. HttpInvokerProxyFactoryBean –

это фабричный компонент, создающий прокси-объекты, реализующие удаленные взаимодействия по протоколу HTTP

Чтобы внедрить службу HTTP Invoker в контекст клиентского приложения Spring, следует настроить компонент, обернутый прок- си-объектом, созданным с помощью HttpInvokerProxyFactoryBean, как показано ниже:

<bean  id="spitterService"  class= "org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean" p:serviceUrl="http://localhost:8080/Spitter/spitter.service" p:serviceInterface="com.habuma.spitter.service.SpitterService"      />

Сравните это определение компонента с соответствующими опре- делениями в разделах 11.2.2 и 11.3.2, и вы увидите, что различия минимальны. Свойство serviceInterface, как и прежде, определяет

интерфейс, реализованный службой Spitter. А свойство serviceUrl определяет адрес удаленной службы. Поскольку модель HTTP Invoker основана на использовании протокола HTTP, подобно ре- шениям Hessian и Burlap, свойство serviceUrl может хранить тот же URL, что и версии компонентов на основе решений Hessian и Burlap.

Не любите симметрию?

Механизм Spring HTTP Invoker объединяет в себе лучшие черты решений удаленных взаимодействий – простоту работы с протоко- лом HTTP и стандартный для Java механизм сериализации объек- тов. Все это делает HTTP Invoker весьма привлекательной альтер- нативой RMI или Hessian/Burlap.

Однако модель Http Invoker имеет одно существенное ограниче- ние, о котором необходимо помнить: это решение удаленных взаи- модействий предлагается только фреймворком Spring Framework. То есть и клиент, и служба должны быть реализованы как приложения на основе Spring. Это также подразумевает, по крайней мере сейчас, что и клиент, и служба должны быть написаны на языке Java. А по- скольку используется стандартный механизм сериализации объек- тов языка Java, на обеих сторонах должны использоваться одни и те же версии классов (как в RMI).

RMI, Hessian, Burlap и HTTP Invoker – отличные механизмы уда- ленных взаимодействий. Но когда речь заходит о широкодоступ- ных веб-службах, ни один из них не способен оказать существенную помощь. Далее мы посмотрим, что может предложить фреймворк Spring для поддержки удаленных взаимодействий с веб-службами, основанными на применении протокола SOAP.

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

По теме:

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