[
https://issues.apache.org/jira/browse/CXF-7538?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Colm O hEigeartaigh updated CXF-7538:
-------------------------------------
Fix Version/s: 4.2.5
4.1.10
> SOAP header silently removed in case of missing configuration parameters
> ------------------------------------------------------------------------
>
> Key: CXF-7538
> URL: https://issues.apache.org/jira/browse/CXF-7538
> Project: CXF
> Issue Type: Bug
> Components: Core
> Affects Versions: 3.1.9
> Reporter: Koen Serneels
> Priority: Major
> Fix For: 4.2.5, 4.1.10
>
>
> Hi. We are using CXF as our JAXWS impl i.c.w. Spring. The configuration of a
> ws client looks like this:
> {code:xml}
> <jaxws:client id="webservices.xyz"
> serviceClass="someclass"
> address="#{@'someurl'}"
> wsdlLocation="classpath:/somewsdl.wsdl">
> <jaxws:dataBinding>
> <bean class="org.apache.cxf.jaxb.JAXBDataBinding"/>
> </jaxws:dataBinding>
> <jaxws:properties>
> <entry key="schema-validation-enabled" value="true"/>
> <entry key="thread.local.request.context" value="true"/>
> </jaxws:properties>
> <jaxws:inInterceptors>
> <ref bean="requestResponseInterceptorIn"/>
> </jaxws:inInterceptors>
> <jaxws:outInterceptors>
> <ref bean="requestResponseInterceptorOut"/>
> </jaxws:outInterceptors>
> </jaxws:client>
> {code}
> We've learned that the wsdlLocation attribute is rather vital for full schema
> validation. Makes sense, as it needs access to the actual schema's for this.
> However, we also saw that when setting the wsdlLocation attribute, the stack
> suddenly drops soap headers. The header in question is defined in the WSDL
> like this (all pretty standard):
> {code:xml}
> <operation name="someOperation">
> <SOAP11:operation/>
> <input>
> <SOAP11:body use="literal"/>
> <SOAP11:header message="wsdltns:requestHeader" part="somePart"
> use="literal"/>
> </input>
> <output>
> <SOAP11:body use="literal"/>
> </output>
> <fault name="someException">
> <SOAP11:fault name="someException" use="literal"/>
> </fault>
> </operation>
> {code}
> Even though the header is passed along in the method call on the client stub,
> the header is no longer present in the SOAP message when the wsdlLocation
> attribute is set. There is no error, no nothing. Then we learned that if we
> add following attributes to the the jaxws:client element, the header is sent
> along just fine;
> {code:xml}
> serviceName="wsdltns:someService"
> endpointName="wsdltns:someEndpoint"
> {code}
> So to summarize: the serviceName and endpointName seem optional as the
> client stub just works without them, even when the wsdlLocation is
> specified. However, in the latter case, the SOAP headers seem to be silently
> dropped. Because of this we now have all kinds of unit tests to verify that
> the client stubs are still 'configured correctly', to avoid the silent loss
> of SOAP headers if someone would accidentally remove any of these seemingly
> optional attributes. Dropping headers silently without any error seems a bug
> to me.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)