servicemix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré (JIRA) <j...@apache.org>
Subject [jira] Commented: (SMXCOMP-656) HTTP component doesn't correctly manage namespace
Date Thu, 05 Nov 2009 12:03:54 GMT

    [ https://issues.apache.org/activemq/browse/SMXCOMP-656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=55172#action_55172
] 

Jean-Baptiste Onofré commented on SMXCOMP-656:
----------------------------------------------

After deeper analyzes, the problem is in the StaxSource class.

In parse() method, on the START_ELEMENT, we get element properties from the streamReader:
uri, localName, prefix, attributes.
We construct the element qname and call the startElement() method on the contentHandler (provided
by xalan).

If the element namespace URI is not null, we put the URI in the startElement() method.
Else, if the element namespace URI is null, we put XmlConstants.NULL_NS_URI. NULL_NS_URI corresponds
to "", so we can expect to have xmlns="" in the resulting XML.
Unfortunately, it seems that the contentHandler ignores uri like "" and put the same as null:
the xmlns doesn't appear in the resulting XML.

I make a test using Xalan 2.7.1 in place of the 2.7.0 to see if a fix has been made around
this.

Else, I will implement a workaround into the StaxSource getAttributes() method to manage namespace
URI.

> HTTP component doesn't correctly manage namespace
> -------------------------------------------------
>
>                 Key: SMXCOMP-656
>                 URL: https://issues.apache.org/activemq/browse/SMXCOMP-656
>             Project: ServiceMix Components
>          Issue Type: Bug
>          Components: servicemix-http
>    Affects Versions: servicemix-http-2009.01
>            Reporter: Jean-Baptiste Onofré
>            Assignee: Jean-Baptiste Onofré
>
> I have a CXF-SE endpoint exposing a WSDL. I "expose" this CXF-SE endpoint using a HTTP
SU and a CXF-BC SU.
> The complete test case is available here:
> http://svn.nanthrax.net/cxfse-ns-test/
> Using soapUI, I generate the soap env request which looks like this:
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:nan="http://www.nanthrax.net">
>    <soapenv:Header/>
>    <soapenv:Body>
>       <nan:echo>
>          <!--Optional:-->
>          <request>
>             <!--Zero or more repetitions:-->
>             <arguments>-t</arguments>
> 	    <arguments>-r</arguments>
>             <!--Optional:-->
>             <operation>test</operation>
>          </request>
>       </nan:echo>
>    </soapenv:Body>
> </soapenv:Envelope>
> I send this soap envelope to the HTTP and CXF-BC: it's working fine, I got the expected
soap env response.
> Now, I change the soap env request to remove the namespace prefix. The new soap env looks
like this:
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
>    <soapenv:Header/>
>    <soapenv:Body>
>       <echo xmlns="http://www.nanthrax.net">
>          <!--Optional:-->
>          <request xmlns="">
>             <!--Zero or more repetitions:-->
>             <arguments>-t</arguments>
> 	    <arguments>-r</arguments>
>             <!--Optional:-->
>             <operation>test</operation>
>          </request>
>       </echo>
>    </soapenv:Body>
> </soapenv:Envelope>
> If I send this to CXF-BC, it's working fine (as expected :)).
> But if I send it to the HTTP endpoint, CXF-SE can unmarshal the request and the object
is null.
> Here's the debug log when submitting the soap env via the HTTP endpoint:
> DEBUG - HttpSoapConsumerMarshaler      - Using default request content encoding.
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.interceptors.mime.AttachmentsInInterceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.interceptors.xml.StaxInInterceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.bindings.soap.interceptors.SoapInInterceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.bindings.soap.interceptors.SoapActionInOperationInterceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.interceptors.wsdl.WsdlOperationInInterceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.bindings.soap.interceptors.MustUnderstandInterceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.interceptors.jbi.JbiInWsdl1Interceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.interceptors.jbi.JbiInInterceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.interceptors.mime.AttachmentsInInterceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.interceptors.xml.StaxInInterceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.bindings.soap.interceptors.SoapInIntercept
> or
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.bindings.soap.interceptors.SoapActionInOpe
> rationInterceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.interceptors.wsdl.WsdlOperationInIntercept
> or
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.bindings.soap.interceptors.MustUnderstandI
> nterceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.interceptors.jbi.JbiInWsdl1Interceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.interceptors.jbi.JbiInInterceptor
> DEBUG - HttpComponent                  - Created correlation id: ID:127.0.1.1-124593a6cfe-14:0
> DEBUG - DeliveryChannelImpl            - Send ID:127.0.1.1-124593a6cfe-14:0 in DeliveryChannel{servicemix-http}
> DEBUG - SecuredBroker                  - send exchange with secure broker
> DEBUG - SecuredBroker                  - service name :{http://www.nanthrax.net}Echo
> DEBUG - SecuredBroker                  - operation name :{http://www.nanthrax.net}echo
> DEBUG - SedaFlow                       - Called Flow send
> DEBUG - HttpComponent                  - Suspending continuation for exchange: ID:127.0.1.1-124593a6cfe-14:0
> DEBUG - SedaQueue                      - org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@49f9fa
dequeued exchange: InOut[
>   id: ID:127.0.1.1-124593a6cfe-14:0
>   status: Active
>   role: provider
>   service: {http://www.nanthrax.net}Echo
>   endpoint: EchoImplPort
>   operation: {http://www.nanthrax.net}echo
>   in: <?xml version="1.0" encoding="UTF-8"?><jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper"
xmlns:msg="http://www.nanthrax.net" name="echo" type="msg:echo" version="1.0"><jbi:part><echo
xmlns="http://www.nanthrax.net">
>          <request>
>             <arguments>-t</arguments>
>             <arguments>-r</arguments>
>             <operation>test</operation>
>          </request>
>       </echo></jbi:part></jbi:message>
> ]
> DEBUG - CxfSeComponent                 - Received exchange: status: Active, role: provider
> DEBUG - CxfSeComponent                 - Retrieved correlation id: ID:127.0.1.1-124593a6cfe-14:0
> INFO  - JBITransportFactory            - configuring DeliveryChannel:   org.apache.servicemix.common.EndpointDeliveryChannel@2a7640
> ERROR - EchoImpl                       - Request is null.
> INFO  - PhaseInterceptorChain          - Application has thrown exception, unwinding
now Request is null.
> DEBUG - DeliveryChannelImpl            - Send ID:127.0.1.1-124593a6cfe-14:0 in DeliveryChannel{servicemix-cxf-se}
> DEBUG - SecuredBroker                  - send exchange with secure broker
> DEBUG - SedaFlow                       - Called Flow send
> DEBUG - SedaQueue                      - org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@11e31ea
dequeued exchange: InOut[
>   id: ID:127.0.1.1-124593a6cfe-14:0
>   status: Error
>   role: consumer
>   interface: {http://www.nanthrax.net}Echo
>   service: {http://www.nanthrax.net}Echo
>   endpoint: EchoImplPort
>   operation: {http://www.nanthrax.net}echo
>   in: <?xml version="1.0" encoding="UTF-8"?><jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper"
xmlns:msg="http://www.nanthrax.net" name="echo" type="msg:echo" version="1.0"><jbi:part><echo
xmlns="http://www.nanthrax.net">
>          <request>
>             <arguments>-t</arguments>
>             <arguments>-r</arguments>
>             <operation>test</operation>
>          </request>
>       </echo></jbi:part></jbi:message>
>   error: org.apache.cxf.interceptor.Fault: Request is null.
> ]
> DEBUG - HttpComponent                  - Received exchange: status: Error, role: consumer
> DEBUG - HttpComponent                  - Retrieved correlation id: ID:127.0.1.1-124593a6cfe-14:0
> DEBUG - HttpComponent                  - Resuming continuation for exchange: ID:127.0.1.1-124593a6cfe-14:0
> DEBUG - JettyContextManager            - Dispatching job: RetryContinuation@23214048,pending,resumed
> DEBUG - HttpComponent                  - Receiving HTTP request: POST /nanthrax/echo/
HTTP/1.1
> Content-Type: text/xml;charset=UTF-8
> SOAPAction: ""
> User-Agent: Jakarta Commons-HttpClient/3.1
> Host: localhost:8192
> Content-Length: 471
> DEBUG - HttpSoapConsumerMarshaler      - Using default response content encoding.
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.interceptors.xml.StaxOutInterceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.bindings.soap.interceptors.SoapOutInterceptor
> DEBUG - PhaseInterceptorChain          - Adding interceptor org.apache.servicemix.soap.bindings.soap.interceptors.SoapFaultOutInterceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.interceptors.xml.StaxOutInterceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.bindings.soap.interceptors.SoapOutInterceptor
> DEBUG - PhaseInterceptorChain          - Invoking handleMessage on interceptor org.apache.servicemix.soap.bindings.soap.interceptors.SoapFaultOutInterceptor

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message