Cómo agregar encargo elemento SOAP encabezado para el WSDL generado en primavera-WS
-
19-09-2019 - |
Pregunta
estamos migrando desde WebLogic servicios web para la primavera-WS (1.5.x). En la actualidad existe un problema que nos enfrentamos:
Tenemos que pasar un objeto de contexto (WLS en que se pasa como elemento SOAP Header) a otros servicios que todavía vigentes en el WLS desde el servicio de Primavera-WS potencia. El elemento de cabecera todavía está formulado en el lado del cliente y los de nueva creación (WS Primavera-WS) solo debe pasarlo a otros servicios.
Me puedo imaginar cómo sería pasado el elemento personalizado: anular el doWithMessage (mensaje WebServiceMessage) Método ...
¿Hay una manera de generar el WSDL con la ayuda de DefaultWsdl11Definition para contener ese elemento encabezado personalizado? Vea el ejemplo:
<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>
Gracias por la ayuda
Solución
Nos encontramos con un problema similar en mi proyecto. Comprobar en extender SuffixBasedPortTypesProvider, SuffixBasedMessagesProvider y Soap11Provider. Usamos el InliningXsdSchemaTypesProvider importar el esquema que utilizamos para construir el WSDL. Si ejecuta la generación de WSDL a través del depurador obtendrá la caída de cómo funciona. El código de primavera es fácil de seguir y ampliar.