#java #spring #spring-ws
#java #spring #spring-ws
Вопрос:
Мы использовали PayloadRootQNameEndpointMapping
для сопоставления сценариев конечных точек (на основе языка сценариев, такого как groovy или что-то еще) с заданным корнем QName
. Недавно мы пытались перенести spring ws на версию 2.0. Javadoc PayloadRootQNameEndpointMapping показывает, что класс помечен как устаревший.
PayloadRootQNameEndpointMapping
Не рекомендуется с Spring Web Services 2.0 в пользуPayloadRootAnnotationMethodEndpointMapping
Поскольку аннотации статичны, мы не можем предоставить динамическую концепцию для конечных точек сценариев. До сих пор мы могли в общем виде сопоставлять компонент, который обрабатывает конечную точку скрипта (предоставляется с файлом скрипта и некоторыми контекстами), с корнем QName
.
Коротко: как мы можем добиться сопоставления конечной точки старого доброго компонента с корневым QName без использования устаревшего API? Есть идеи?
Заранее благодарю вас.
Ответ №1:
Можете ли вы использовать что-то вроде SimpleMethodEndpointMapping для написания собственного диспетчера? Проверьте ссылку на источник
Комментарии:
1. Да, я написал для этого свой собственный диспетчер. Я также теперь генерирую конфигурацию компонента, хотя это не лучшая практика =/
Ответ №2:
Вы можете использовать более общий XPathPayloadEndpointMapping, где xpath будет указывать на корневой элемент.
<bean id="endpointMapping" class="org.springframework.ws.server.endpoint.mapping.XPathPayloadEndpointMapping">
<property name="expression" value="local-name(//*[1])" />
<property name="endpointMap">
<map>
<entry key="rootElement" value="endpointRef" />
</map>
</property>
</bean>