Как добавить пользовательский элемент SOAP-Header в сгенерированный WSDL в Spring-WS

StackOverflow https://stackoverflow.com/questions/1320767

Вопрос

мы переходим с веб-сервисов WebLogic на Spring-WS (1.5.X).В настоящее время мы столкнулись с одной проблемой:

Нам нужно передать объект контекста (в WLS он передается как элемент SOAP-Header) другим службам, которые все еще работают в WLS, из службы на базе Spring-WS.Элемент заголовка по-прежнему формулируется на стороне клиента, и вновь созданный WS (Spring-WS) должен просто передать его другим службам.

Я могу представить, как будет передаваться пользовательский элемент:переопределить метод doWithMessage(сообщение WebServiceMessage)...

Есть ли способ сгенерировать wsdl с помощью DefaultWsdl11Definition, чтобы он содержал этот пользовательский элемент заголовка?См. пример:

<wsdl:operation name="GetSomeInformation">
    <soap:operation
        soapAction="http://www.dummyservice.com/InformationService/GetSomeInformation" />
    <wsdl:input>
        <soap:body use="literal" />
        <soap:header message="ctx:ServiceContextMessage" part="serviceContext" use="literal" />
    </wsdl:input>
    <wsdl:output>
        <soap:body use="literal" />
    </wsdl:output>
    <wsdl:fault name="Error">
        <soap:fault name="Error" use="literal" />
    </wsdl:fault>
</wsdl:operation>

Спасибо за помощь

Это было полезно?

Решение

В моем проекте мы столкнулись с похожей проблемой.Проверьте расширение SuffixBasedPortTypesProvider, SuffixBasedMessagesProvider и Soap11Provider.Мы используем InliningXsdSchemaTypesProvider для импорта схемы, которую мы используем для построения WSDL.Если вы запустите генерацию WSDL через отладчик, вы поймете, как это работает.Код Spring легко следовать и расширять.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top