Signing both request and response - Error signing response

View: New views
2 Messages — Rating Filter:   Alert me  

Signing both request and response - Error signing response

by pwanner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi everybody!

I'm trying to sign both request and response of a WS call.

Signing request with UsernameToken and Signature works well but signing response throws an exception (see stacktrace bellow)

I have done tons of tests but I have to give up, no more idea and nothing found on forums.

Any help would be really appreciated. Thank you.

I'm using JDK 1.6.0_03 (with jaxb 2.1), Tomcat 6.0.13, CXF 2.1-SNAPSHOT and Spring 2.0.7

Here are the Spring config for the client and the server side

Client side:

  <bean id="ePayClient" class="ch.bedag.epay.EPayService"
    factory-bean="clientFactory" factory-method="create" />

  <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
    <property name="serviceClass" value="epay.EPayService" />
    <property name="address" value="http://localhost:8080/ePayService/ePayService" />
    <property name="outInterceptors">
      <list>
        <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor" />
        <ref bean="Secure_Request" />
      </list>
    </property>
    <property name="inInterceptors">
      <list>
        <ref bean="Secure_Response" />
        <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
      </list>
    </property>
  </bean>

  <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" id="Secure_Request">
    <constructor-arg>
      <map>
        <entry key="action" value="UsernameToken Timestamp Signature" />
        <entry key="user" value="ePayClient" />
        <entry key="passwordType" value="PasswordDigest" />
        <entry key="signaturePropFile" value="client_sign.properties" />
        <entry>
          <key>
            <value>passwordCallbackRef</value>
          </key>
          <ref bean="passwordCallback" />
        </entry>
      </map>
    </constructor-arg>
  </bean>

  <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" id="Secure_Response">
    <constructor-arg>
      <map>
        <entry key="action" value="Timestamp Signature" />
        <entry key="signaturePropFile" value="client_sign.properties" />
        <entry>
          <key>
            <value>passwordCallbackRef</value>
          </key>
          <ref bean="passwordCallback" />
        </entry>
      </map>
    </constructor-arg>
  </bean>

  <bean id="passwordCallback" class="epay.client.ClientPasswordCallback" />


Server side :

  <jaxws:endpoint id="ePayWS" implementor="#ePayService" address="/ePayService" wsdlLocation="/WEB-INF/wsdl/ePayService.wsdl">
    <jaxws:outInterceptors>
      <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
        <ref bean="Secure_Response"/>
    </jaxws:outInterceptors>
    <jaxws:inInterceptors>
      <ref bean="Secure_Request"/>
      <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
    </jaxws:inInterceptors>
  </jaxws:endpoint>
 
  <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" id="Secure_Response">
    <constructor-arg>
      <map>
        <entry key="action" value="Timestamp Signature"/>
        <entry key="user" value="ePayServer"/>
        <entry key="signaturePropFile" value="server_sign.properties"/>
        <entry>
          <key>
            <value>passwordCallbackRef</value>
          </key>
          <ref bean="passwordCallback" />
        </entry>
      </map>
    </constructor-arg>
  </bean>
 
  <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" id="Secure_Request">
    <constructor-arg>
      <map>
        <entry key="action" value="UsernameToken Timestamp Signature"/>
        <entry key="passwordType" value="PasswordDigest" />
        <entry key="signaturePropFile" value="server_sign.properties"/>
        <entry>
          <key>
            <value>passwordCallbackRef</value>
          </key>
          <ref bean="passwordCallback" />
        </entry>
      </map>
    </constructor-arg>
  </bean>

  <bean id="passwordCallback" class="epay.AuthenticationCallbackHandler" />


Stacktrace:


Before error
Validation of incoming call
27062 [http-8080-3] INFO  org.apache.xml.security.signature.Reference  - Verification successful for URI "#Timestamp-7845780"
27062 [http-8080-3] INFO  org.apache.xml.security.signature.Reference  - Verification successful for URI "#id-12183971"
Execution of implementation
27187 [http-8080-3] INFO  epay.EPayServiceImpl  - Executing operation initiate
End of implementation
Preparing response
and then...

29 nov. 2007 16:29:37 com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges
GRAVE: SAAJ0539: Unable to get header stream in saveChanges
29 nov. 2007 16:29:37 com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges
GRAVE: SAAJ0540: Error during saving a multipart message
29 nov. 2007 16:29:37 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: SOAPEXCEPTION
  at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:122)
  at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:103)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:74)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:74)
  at org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDestination.java:79)
  at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:256)
  at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
  at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
  at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message
  at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.saveChanges(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.writeTo(Unknown Source)
  at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:116)
  ... 36 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to get header stream in saveChanges:
  ... 39 more
Caused by: java.io.IOException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
  at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getHeaderBytes(Unknown Source)
  ... 39 more
29 nov. 2007 16:29:37 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.
  at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.insertBefore(Unknown Source)
  at com.sun.org.apache.xerces.internal.dom.NodeImpl.appendChild(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.appendChild(Unknown Source)
  at org.apache.cxf.staxutils.W3CDOMStreamWriter.newChild(W3CDOMStreamWriter.java:82)
  at org.apache.cxf.staxutils.W3CDOMStreamWriter.writeStartElement(W3CDOMStreamWriter.java:99)
  at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.writeSoapEnvelopeStart(SoapOutInterceptor.java:95)
  at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage(SoapOutInterceptor.java:76)
  at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage(SoapOutInterceptor.java:57)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:90)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:224)
  at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:74)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:74)
  at org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDestination.java:79)
  at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:256)
  at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
  at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
  at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
29 nov. 2007 16:29:37 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:187)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:56)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:402)
  at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1948)
  at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1791)
  at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
  at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:575)
  at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
  at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
  at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
  at $Proxy33.initiate(Unknown Source)
  at ch.bedag.epay.test.Checkout.doGet(Checkout.java:32)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
  at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
  at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]
  at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661)
  at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134)
  at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040)
  at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
  at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:85)
  ... 41 more
29 nov. 2007 16:29:37 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet Checkout a généré une exception
javax.xml.ws.soap.SOAPFaultException: Error reading XMLStreamReader.
  at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:174)
  at $Proxy33.initiate(Unknown Source)
  at ch.bedag.epay.test.Checkout.doGet(Checkout.java:32)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
  at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
  at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:187)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:56)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:402)
  at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1948)
  at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1791)
  at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
  at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:575)
  at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
  at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
  at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
  ... 28 more
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]
  at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661)
  at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134)
  at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040)
  at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
  at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:85)
  ... 41 more

RESOLVED: Signing both request and response - Error signing response

by pwanner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

see that thread http://www.nabble.com/WS-Security-and-Tomcat-error-to14271852.html


pwanner wrote:
Hi everybody!

I'm trying to sign both request and response of a WS call.

Signing request with UsernameToken and Signature works well but signing response throws an exception (see stacktrace bellow)

I have done tons of tests but I have to give up, no more idea and nothing found on forums.

Any help would be really appreciated. Thank you.

I'm using JDK 1.6.0_03 (with jaxb 2.1), Tomcat 6.0.13, CXF 2.1-SNAPSHOT and Spring 2.0.7

Here are the Spring config for the client and the server side

Client side:

  <bean id="ePayClient" class="ch.bedag.epay.EPayService"
    factory-bean="clientFactory" factory-method="create" />

  <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
    <property name="serviceClass" value="epay.EPayService" />
    <property name="address" value="http://localhost:8080/ePayService/ePayService" />
    <property name="outInterceptors">
      <list>
        <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor" />
        <ref bean="Secure_Request" />
      </list>
    </property>
    <property name="inInterceptors">
      <list>
        <ref bean="Secure_Response" />
        <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
      </list>
    </property>
  </bean>

  <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" id="Secure_Request">
    <constructor-arg>
      <map>
        <entry key="action" value="UsernameToken Timestamp Signature" />
        <entry key="user" value="ePayClient" />
        <entry key="passwordType" value="PasswordDigest" />
        <entry key="signaturePropFile" value="client_sign.properties" />
        <entry>
          <key>
            <value>passwordCallbackRef</value>
          </key>
          <ref bean="passwordCallback" />
        </entry>
      </map>
    </constructor-arg>
  </bean>

  <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" id="Secure_Response">
    <constructor-arg>
      <map>
        <entry key="action" value="Timestamp Signature" />
        <entry key="signaturePropFile" value="client_sign.properties" />
        <entry>
          <key>
            <value>passwordCallbackRef</value>
          </key>
          <ref bean="passwordCallback" />
        </entry>
      </map>
    </constructor-arg>
  </bean>

  <bean id="passwordCallback" class="epay.client.ClientPasswordCallback" />


Server side :

  <jaxws:endpoint id="ePayWS" implementor="#ePayService" address="/ePayService" wsdlLocation="/WEB-INF/wsdl/ePayService.wsdl">
    <jaxws:outInterceptors>
      <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
        <ref bean="Secure_Response"/>
    </jaxws:outInterceptors>
    <jaxws:inInterceptors>
      <ref bean="Secure_Request"/>
      <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
    </jaxws:inInterceptors>
  </jaxws:endpoint>
 
  <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" id="Secure_Response">
    <constructor-arg>
      <map>
        <entry key="action" value="Timestamp Signature"/>
        <entry key="user" value="ePayServer"/>
        <entry key="signaturePropFile" value="server_sign.properties"/>
        <entry>
          <key>
            <value>passwordCallbackRef</value>
          </key>
          <ref bean="passwordCallback" />
        </entry>
      </map>
    </constructor-arg>
  </bean>
 
  <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" id="Secure_Request">
    <constructor-arg>
      <map>
        <entry key="action" value="UsernameToken Timestamp Signature"/>
        <entry key="passwordType" value="PasswordDigest" />
        <entry key="signaturePropFile" value="server_sign.properties"/>
        <entry>
          <key>
            <value>passwordCallbackRef</value>
          </key>
          <ref bean="passwordCallback" />
        </entry>
      </map>
    </constructor-arg>
  </bean>

  <bean id="passwordCallback" class="epay.AuthenticationCallbackHandler" />


Stacktrace:


Before error
Validation of incoming call
27062 [http-8080-3] INFO  org.apache.xml.security.signature.Reference  - Verification successful for URI "#Timestamp-7845780"
27062 [http-8080-3] INFO  org.apache.xml.security.signature.Reference  - Verification successful for URI "#id-12183971"
Execution of implementation
27187 [http-8080-3] INFO  epay.EPayServiceImpl  - Executing operation initiate
End of implementation
Preparing response
and then...

29 nov. 2007 16:29:37 com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges
GRAVE: SAAJ0539: Unable to get header stream in saveChanges
29 nov. 2007 16:29:37 com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges
GRAVE: SAAJ0540: Error during saving a multipart message
29 nov. 2007 16:29:37 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: SOAPEXCEPTION
  at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:122)
  at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:103)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:74)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:74)
  at org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDestination.java:79)
  at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:256)
  at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
  at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
  at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message
  at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.saveChanges(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.writeTo(Unknown Source)
  at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:116)
  ... 36 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to get header stream in saveChanges:
  ... 39 more
Caused by: java.io.IOException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
  at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getHeaderBytes(Unknown Source)
  ... 39 more
29 nov. 2007 16:29:37 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.
  at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.insertBefore(Unknown Source)
  at com.sun.org.apache.xerces.internal.dom.NodeImpl.appendChild(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.appendChild(Unknown Source)
  at org.apache.cxf.staxutils.W3CDOMStreamWriter.newChild(W3CDOMStreamWriter.java:82)
  at org.apache.cxf.staxutils.W3CDOMStreamWriter.writeStartElement(W3CDOMStreamWriter.java:99)
  at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.writeSoapEnvelopeStart(SoapOutInterceptor.java:95)
  at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage(SoapOutInterceptor.java:76)
  at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage(SoapOutInterceptor.java:57)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:90)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:224)
  at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:74)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:74)
  at org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDestination.java:79)
  at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:256)
  at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
  at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
  at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
29 nov. 2007 16:29:37 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:187)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:56)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:402)
  at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1948)
  at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1791)
  at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
  at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:575)
  at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
  at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
  at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
  at $Proxy33.initiate(Unknown Source)
  at ch.bedag.epay.test.Checkout.doGet(Checkout.java:32)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
  at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
  at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]
  at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661)
  at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134)
  at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040)
  at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
  at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:85)
  ... 41 more
29 nov. 2007 16:29:37 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet Checkout a généré une exception
javax.xml.ws.soap.SOAPFaultException: Error reading XMLStreamReader.
  at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:174)
  at $Proxy33.initiate(Unknown Source)
  at ch.bedag.epay.test.Checkout.doGet(Checkout.java:32)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
  at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
  at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:187)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:56)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:402)
  at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1948)
  at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1791)
  at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
  at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:575)
  at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
  at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
  at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
  at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
  ... 28 more
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]
  at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661)
  at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134)
  at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040)
  at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
  at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095)
  at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:85)
  ... 41 more