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é


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.sedaqueu...@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.endpointdeliverychan...@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.sedaqueu...@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: 
retrycontinuat...@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.

Reply via email to