Uploaded image for project: 'ServiceMix Components'
  1. ServiceMix Components
  2. SMXCOMP-555

Not correctly processed org.apache.axis2.AxisFault when using servicemix-cxf-bc as a web service proxy, causes java.lang.NullPointerException in JbiInWsdl1Interceptor class

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • servicemix-cxf-bc-2008.01, servicemix-cxf-bc-2009.01
    • servicemix-cxf-bc
    • None
    • ServiceMix 3.3, Apache Axis2 1.4.1, Apache Rampart 1.4

    Description

      I have implemented Axis2 web service using Rampart module for username/password authentication. Direct request to the service implementation looks like (header is generated by Rampart, based on WS Security Policy using Password Digest):

      <?xml version='1.0' encoding='UTF-8'?>
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      	<soapenv:Header>
      		<wsse:Security
      			xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
      			soapenv:mustUnderstand="1">
      			<wsse:UsernameToken
      				xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
      				wsu:Id="UsernameToken-29057219">
      				<wsse:Username>libuser</wsse:Username>
      				<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">zjSmm202AHSBk2N6gW0bzYjJq8U=
      				</wsse:Password>
      				<wsse:Nonce>i+46ifpbSz1OHWRL57W0yg==
      				</wsse:Nonce>
      				<wsu:Created>2009-05-30T12:15:15.703Z
      				</wsu:Created>
      			</wsse:UsernameToken>
      		</wsse:Security>
      	</soapenv:Header>
      	<soapenv:Body>
      		<ns1:NewOperation xmlns:ns1="http://www.example.org/Axis2/">
      			<in>TEST</in>
      		</ns1:NewOperation>
      	</soapenv:Body>
      </soapenv:Envelope>
      

      If authentication fails AxisFault is thrown which produces this response to the client (it works correctly):

      <?xml version='1.0' encoding='UTF-8'?>
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      	<soapenv:Body>
      		<soapenv:Fault
      			xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      			<faultcode>wsse:InvalidSecurity</faultcode>
      			<faultstring>The security token could not be authenticated or authorized</faultstring>
      			<detail />
      		</soapenv:Fault>
      	</soapenv:Body>
      </soapenv:Envelope>
      

      If I easily add this service to the ServiceMix, fault is not propagated to the client, because ServiceMix throws this exception (servicemix-cxf-bc doesn't work as a proxy only and stops returning response to the client because of exception):

       
      java.lang.NullPointerException
              at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
              at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
              at org.apache.servicemix.cxfbc.interceptors.JbiInWsdl1Interceptor.handleJBIFault(JbiInWsdl1Interceptor.java:235)
              at org.apache.servicemix.cxfbc.interceptors.JbiInWsdl1Interceptor.handleMessage(JbiInWsdl1Interceptor.java:149)
              at org.apache.servicemix.cxfbc.interceptors.JbiInWsdl1Interceptor.handleMessage(JbiInWsdl1Interceptor.java:59)
              at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
              at org.apache.servicemix.cxfbc.CxfBcProviderMessageObserver.onMessage(CxfBcProviderMessageObserver.java:137)
              at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2029)
              at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1865)
              at org.apache.servicemix.cxfbc.CxfBcProvider.process(CxfBcProvider.java:236)
              at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:600)
              at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:554)
              at org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:510)
              at org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
              at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
              at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
              at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
              at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
              at java.lang.Thread.run(Thread.java:619)
      

      I tried almost all version of servicemix-cxf-bc components (2008.1, 2009.1, last source) with no success.

      Attachments

        Activity

          People

            ffang Freeman Yue Fang
            ropman Radek Jira
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: