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

0

Как после получения сообщения от клиента сервлет MessageDis- patcherServlet определит, какая конечная точка должна его обрабаты- вать? Даже при том, что в данном примере создается единственная конечная точка (оценивающая комбинацию карт), сервлет Message- DispatcherServlet поддерживает работу с несколькими конечными точками. Нам необходим некоторый способ, который позволит ото- бражать входящие сообщения в конечные точки, обрабатывающие их.

В главе 8 было показано, как сервлет DispatcherServlet из Spring MVC отображает запросы браузера в контроллеры Spring MVC. Ана-

логичным образом действует и сервлет MessageDispatcherServlet, выпол- няющий отображение входящих XML-сообщений в конечные точки.

Для нужд службы оценки комбинации карт мы будем использо- вать компонент PayloadRootQNameEndpointMapping из фреймворка Spring- WS, который настраивается, как показано ниже:

<bean id="payloadMapping" class="org.springframework.ws.server.endpoint.mapping.

➥ PayloadRootQNameEndpointMapping">

<property name="endpointMap">

<map>

<entry key=

"{http://www.springinaction.com/poker/schemas}EvaluateHandRequest" value-ref="evaluateHandEndpoint"   />

</map>

</property>

</bean>

Компонент PayloadRootQNameEndpointMapping отображает входящие SOAP-сообщения в конечные точки, исследуя полное квалифици- рованное имя (QName) содержимого сообщения и определяя соответ- ствующую ему конечную точку в списке (свойство endpointMap).

В нашем примере корневым элементом сообщения является

<EvaluateHandRequest>. С идентификатором URI пространства имен http://www.springinaction.com/poker/schemas получается полное имя сообщения {http://www.springinaction.com/poker/schemas}EvaluateHand- Request. Это имя отображается в компонент с идентификатором evaluateHandEndpoint, который является реализацией конечной точки, созданной в разделе 15.3.2.

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

По теме:

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