Главная » Spring » Обработка сообщений в веб-службе Spring

0

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

Возможно, вам будет полезно знать, что в этом отношении фрейм- ворки Spring MVC и Spring-WS очень похожи. Пользователи взаи- модействуют с приложениями на основе фреймворка Spring MVC посредством контроллеров, а клиенты веб-служб взаимодействуют со службами на основе фреймворка Spring-WS – посредством ко- нечных точек.

На рис. 15.3 показано, как клиенты взаимодействуют с конеч- ными точками. Конечная точка – это класс, принимающий XML- сообщение от клиента и, опираясь на содержимое сообщения, вы- полняющий вызовы методов внутренних объектов. Конечная точка службы оценки комбинации карт будет обрабатывать сообщения

<EvaluateHandRequest>.

Рис. 15.3. Конечные точки –

это реализация веб-службы в Spring-WS.

Конечные точки обрабатывают входящие сообщения и возвращают ответы в формате XML

Как только конечная точка завершит обработку, она вернет от- вет – другое XML-сообщение. В данном случае – XML-сообщение

<EvaluateHandResponse>.

Фреймворк Spring-WS определяет несколько абстрактных клас- сов, перечисленных в табл. 15.2, на основе которых можно создавать конечные точки.

Все абстрактные классы конечных точек, перечисленные в табл. 15.2, в значительной степени похожи друг на друга. Выбор того или дру- гого в большей степени определяется личными предпочтениями и технологией парсинга XML-сообщений (например, SAX, DOM или StAX). Особняком стоит только класс AbstractMarshallingPayloadEndp oint, поддерживающий автоматический маршалинг и демаршалинг XML-сообщений в Java-объекты и обратно.

Таблица 15.2. Абстрактные реализации конечных точек в Spring-WS

Абстрактный класс конечной точки в пакете org.springframework.ws. server.endpoint

Описание

AbstractDom4jPayloadEndpoint

Конечная точка, обрабатывающая содер- жимое сообщений как элементы Element из модели dom4j

AbstractDomPayloadEndpoint

Конечная точка, обрабатывающая содер- жимое сообщений как элементы Element из модели DOM

AbstractJDomPayloadEndpoint

Конечная точка, обрабатывающая содер- жимое сообщений как элементы Element из модели JDOM

AbstractMarshallingPayloadEndpoint

Конечная точка, выполняющая демарша- линг содержимого запросов в объекты

и маршалинг объектов ответа в XML

AbstractSaxPayloadEndpoint

Конечная точка, обрабатывающая содержимое сообщений с помощью SAX-реализации ContextHandler

AbstractStaxEventPayloadEndpoint

Конечная точка, обрабатывающая содержимое сообщений с помощью

StAX-реализации, основанной на событиях

AbstractStaxStreamPayloadEndpoint

Конечная точка, обрабатывающая содер- жимое сообщений с помощью потоковой StAX-реализации

AbstractXomPayloadEndpoint

Конечная точка, обрабатывающая содер- жимое сообщений как элементы Element из модели XOM

Класс AbstractMarshallingPayloadEndpoint будет рассматриваться не- много ниже в этой главе (в разделе 15.3.2). Но сначала посмотрим, как создать конечную точку, обрабатывающую XML-сообщения не- посредственно.

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

По теме:

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