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

мы переходим с веб-сервисов 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>

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

1 Ответ

2 голосов
/ 23 октября 2009

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

...