[jira] Created: (CXF-2539) Service invocation with parameter null for wrapped style with implicit SOAP header definition

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] Created: (CXF-2539) Service invocation with parameter null for wrapped style with implicit SOAP header definition

JIRA jira@apache.org
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 | Threaded
Open this post in threaded view
|

[jira] Commented: (CXF-2539) Service invocation with parameter null for wrapped style with implicit SOAP header definition

JIRA jira@apache.org

    [ https://issues.apache.org/jira/browse/CXF-2539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12778457#action_12778457 ]

Daniel Kulp commented on CXF-2539:
----------------------------------


Any chance you could test your test case with 2.2.4 and the 2.2.5 stuff that is being voted on now:

http://old.nabble.com/-VOTE--Release-CXF-2.2.5-to26355505.html

There are a bunch of related bugs fixed in 2.2.4 and a couple more fixed in 2.2.5 so this is likely already fixed:

[CXF-2451] Fix an issue with implicit headers and no-arg methods causing
[CXF-2478] Fix problem of wrong part being removed
[CXF-2498] Wrong parameter number exception with explicit soap headers

I BELIEVE CXF-2478 is the fix for this issue.


> 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 | Threaded
Open this post in threaded view
|

[jira] Resolved: (CXF-2539) Service invocation with parameter null for wrapped style with implicit SOAP header definition

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

     [ https://issues.apache.org/jira/browse/CXF-2539?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Holger Delfs resolved CXF-2539.
-------------------------------

       Resolution: Duplicate
    Fix Version/s: 2.2.5

You were right. The problem is already fixed doesn't occur any more with a current 2.2.5-SNAPSHOT version.

> 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
>             Fix For: 2.2.5
>
>
> 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 | Threaded
Open this post in threaded view
|

[jira] Issue Comment Edited: (CXF-2539) Service invocation with parameter null for wrapped style with implicit SOAP header definition

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/jira/browse/CXF-2539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12779112#action_12779112 ]

Holger Delfs edited comment on CXF-2539 at 11/17/09 8:37 PM:
-------------------------------------------------------------

You were right. The problem is already fixed and doesn't occur any more with a current 2.2.5-SNAPSHOT version.

      was (Author: hdelfs):
    You were right. The problem is already fixed doesn't occur any more with a current 2.2.5-SNAPSHOT version.
 

> 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
>             Fix For: 2.2.5
>
>
> 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.