Как можно направить две разные веб-службы с одинаковым пространством имен и локальными именами в разные конечные точки?
Я пытаюсь создать 2 отдельных веб-сервиса, оба в рамках одного весеннего развертывания, оба с генерированием wsdl из одних и тех же xsd-схем, но их нужно направить в две отдельные конечные точки, чтобы я мог обрабатывать запросы по-разному в отдельные контексты.
Пример:
Веб-сервис 1: подмножество доступа, более низкие привилегии и ограничения безопасности
Веб-сервис 2: более высокие привилегии
<sws:dynamic-wsdl id="spml-readonly"
portTypeName="SpmlReadOnlyService"
locationUri="SpmlReadOnly">
<sws:xsd location="/WEB-INF/xsd/spml/pstc_spmlv2_core.xsd"/>
</sws:dynamic-wsdl>
<sws:dynamic-wsdl id="spml-crud"
portTypeName="SpmlCrudService"
locationUri="SpmlCrud">
<sws:xsd location="/WEB-INF/xsd/spml/pstc_spmlv2_core.xsd"/>
<sws:xsd location="/WEB-INF/xsd/spml/pstc_spmlv2_search.xsd"/>
<sws:xsd location="/WEB-INF/xsd/spml/pstc_spmlv2_batch.xsd"/>
</sws:dynamic-wsdl>
Теперь, поскольку оба wsdls основаны на одном и том же xsds, «пространство имен» и & lt; localPart & quot; из запросов встречаются идентичные, независимо от того, к какому веб-сервису я обращаюсь (/ SpmlReadOnly или / SpmlCrud).
Следовательно, это исключает устаревший PayloadRootQNameEndpointMapping, поскольку localPart и пространство имен все еще идентичны, и т. Д., И моя текущая конфигурация просто перенаправляет запросы в один и тот же обработчик метода конечной точки, и у меня нет способа определить, какая веб-служба была называется:
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "lookupRequest")
@ResponsePayload
public Source handleLookupRequest(SoapMessage message) throws Exception {
...
}
Могу ли я сделать то, что я могу сделать? Если xsd'ы являются общими и имеют идентичные пространства имен в корне схемы и одинаковые запросы метода localPart, будет ли когда-нибудь способ различать их и сопоставлять с двумя разными конечными точками? Любая информация об этом будет полезна! Я надеюсь, что мне не нужно настраивать два отдельных .wars и развертывать их отдельно со своими собственными базами кода на сервере!
Спасибо, Damian