Service invocation with parameter null for wrapped style with implicit SOAP
header definition
---------------------------------------------------------------------------------------------
Key: CXF-2539
URL: https://issues.apache.org/jira/browse/CXF-2539
Project: CXF
Issue Type: Bug
Components: JAX-WS Runtime
Affects Versions: 2.2.3
Reporter: Holger Delfs
In my WSDL a security SOAP header is defined as a separate message ("implicit
header definition"), which is handled by a WSS4JInInterceptor. But when the
service implementation is invoked, one of the other parameters has been removed
and thus causes a NullPointerException.
Through debugging I found that in this case the WrapperClassInInterceptor tries
to remove the additional header value from the parameters of the
MessageContentsList by identifying the corresponding MessagePartInfo. But since
the indexing in messageInfo and wrappedMessageInfo is naturally different, the
part index from wrappedMessageInfo (line 140) cannot be used for removing a
value from the newParams list (line 155). Thus a "regular" parameter value gets
removed.
A work around would probably be to use an explicit security parameter with
@WebParam(header = true), as generated from -exsh true flag to wsdl2java, but I
don't like to have this extra parameter in my service interface (as with
@WebParam(header = true) from -exsh true flag to wsdl2java), since security
information is rather an aspect than business parameter.
Here an excerpt from my WSDL with the implicit header definition:
<wsdl:binding name="TravelExpensesServiceSoapBinding"
type="tr:TravelExpensesWebService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="submitTravel">
<soap:operation
soapAction="http://travel.sdm.de/travelExpenses/submitTravel"/>
<wsdl:input name="submitTravelRequest">
<soap:header message="tr:securityHeader"
part="security" wsdl:required="true" use="literal"/>
<soap:body parts="submitTravel" use="literal"/>
</wsdl:input>
<wsdl:output name="submitTravelResponse">
<soap:body parts="submitTravelResponse"
use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.