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.

Reply via email to