Como adicionar elemento de cabeçalho de sabão personalizado ao WSDL gerado no Spring-WS
-
19-09-2019 - |
Pergunta
Estamos migrando de serviços da Web WebLogic para Spring-WS (1.5.x). Atualmente, há um problema que estamos enfrentando:
Precisamos passar por um objeto de contexto (no WLS, ele é passado como elemento do cabeçalho de sabão) para outros serviços que ainda estão sendo executados no WLS do serviço alimentado por Spring-WS. O elemento do cabeçalho ainda é formulado no lado do cliente e o WS (Spring-WS) recém-criado deve transmiti-lo para outros serviços.
Eu posso imaginar como o elemento personalizado seria aprovado: substituir o método DowithMessage (mensagem da WebServicemessage) ...
Existe uma maneira de gerar o WSDL com a ajuda do DefaultWSDL11Definition para conter esse elemento de cabeçalho personalizado? Veja o exemplo:
<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>
Obrigado pela ajuda
Solução
Nós encontramos uma questão semelhante no meu projeto. Verifique a extensão do sufixo -comedomPortypesProvider, o sufixo baseado em provedor e o SOAP11Provider. Utilizamos o InLiningXSDSCHEMATIPESPROVER para importar o esquema que usamos para construir o WSDL. Se você executar a geração do WSDL através do depurador, conseguirá o jeito de como ele funciona. O código da primavera é fácil de seguir e estender.