You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Hadrian Zbarcea (JIRA)" <ji...@apache.org> on 2017/06/03 17:31:04 UTC

[jira] [Created] (CXF-7392) WS-RM: Refresh wsrm:Identifier after service reconnect

Hadrian Zbarcea created CXF-7392:
------------------------------------

             Summary: WS-RM: Refresh wsrm:Identifier after service reconnect
                 Key: CXF-7392
                 URL: https://issues.apache.org/jira/browse/CXF-7392
             Project: CXF
          Issue Type: Bug
          Components: WS-* Components
    Affects Versions: 3.1.10, 3.1.7
            Reporter: Hadrian Zbarcea
             Fix For: 3.2.0, 3.1.12


Another scenario of normal ws-rm traffic, service stops and restarts a bit later. Client keeps sending messages with the known sequence Identifier. The service that just started doesn't know it so it will throw and exception like below:

{code:Title=Karaf logs}
2017-06-02 22:56:55,590 | INFO  | ion(3)-127.0.0.1 | REQ_OUT                          | 37 - org.apache.cxf.cxf-rt-features-logging - 3.1.7 | <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <Action xmlns="http://www.w3.org/2005/08/addressing">http://demo.apifocal.org/greeter/Greeter/greetMeRequest</Action>
    <MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:b4c5ed21-3d98-415c-b79a-cb5c253f0e92</MessageID>
    <To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:8181/cxf/greeter-wsrm</To>
    <ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
      <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
    </ReplyTo>
    <wsrm:Sequence xmlns:ns2="http://www.w3.org/2005/08/addressing" xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702" soap:mustUnderstand="1">
      <wsrm:Identifier>urn:uuid:e4cc49cd-0da2-4f23-acbf-a2896305cfda</wsrm:Identifier>
      <wsrm:MessageNumber>4</wsrm:MessageNumber>
    </wsrm:Sequence>
  </soap:Header>
  <soap:Body>
    <greetMe xmlns="http://demo.apifocal.org/greeter/types">
      <requestType>World3</requestType>
    </greetMe>
  </soap:Body>
</soap:Envelope>

2017-06-02 22:56:55,702 | INFO  | tp1621558749-111 | InstrumentationManagerImpl       | 40 - org.apache.cxf.cxf-rt-management - 3.1.7 | registering MBean org.apache.cxf:bus.id=org.apifocal.demo.wsrm.greeter-wsrm-cxf189207851,type=WSRM.Endpoint,service="{http://demo.apifocal.org/greeter/wsrm}GreeterService",port="{http://demo.apifocal.org/greeter/wsrm}GreeterPort",instance.id=953867382: javax.management.modelmbean.RequiredModelMBean@3ba3e4fc
2017-06-02 22:56:55,704 | WARN  | tp1621558749-111 | AbstractRMInterceptor            | 33 - org.apache.cxf.cxf-core - 3.1.7 | Interceptor encountered a SequenceFault: Reason: The value of wsrm:Identifier is not a known Sequence identifier., code: {http://schemas.xmlsoap.org/soap/envelope/}Client, subCode: null.
2017-06-02 22:56:55,704 | WARN  | tp1621558749-111 | PhaseInterceptorChain            | 33 - org.apache.cxf.cxf-core - 3.1.7 | Interceptor for {http://demo.apifocal.org/greeter/wsrm}GreeterService#{http://demo.apifocal.org/greeter}greetMe has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: The value of wsrm:Identifier is not a known Sequence identifier.
	at org.apache.cxf.ws.rm.soap.SoapFaultFactory.createSoap11Fault(SoapFaultFactory.java:72)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
	at org.apache.cxf.ws.rm.soap.SoapFaultFactory.createFault(SoapFaultFactory.java:62)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
	at org.apache.cxf.ws.rm.AbstractRMInterceptor.handleMessage(AbstractRMInterceptor.java:97)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)[33:org.apache.cxf.cxf-core:3.1.7]
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[33:org.apache.cxf.cxf-core:3.1.7]
	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:254)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)[17:javax.servlet-api:3.1.0]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[108:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[108:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[144:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[106:org.eclipse.jetty.security:9.2.19.v20160908]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[144:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[108:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[144:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.Server.handle(Server.java:499)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[99:org.eclipse.jetty.io:9.2.19.v20160908]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[110:org.eclipse.jetty.util:9.2.19.v20160908]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[110:org.eclipse.jetty.util:9.2.19.v20160908]
	at java.lang.Thread.run(Thread.java:748)[:1.8.0_131]
Caused by: org.apache.cxf.ws.rm.SequenceFault: The value of wsrm:Identifier is not a known Sequence identifier.
	at org.apache.cxf.ws.rm.SequenceFaultFactory.createUnknownSequenceFault(SequenceFaultFactory.java:44)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
	at org.apache.cxf.ws.rm.Destination.acknowledge(Destination.java:166)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
	at org.apache.cxf.ws.rm.RMInInterceptor.processSequence(RMInInterceptor.java:265)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
	at org.apache.cxf.ws.rm.RMInInterceptor.handle(RMInInterceptor.java:195)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
	at org.apache.cxf.ws.rm.AbstractRMInterceptor.handleMessage(AbstractRMInterceptor.java:83)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
	... 32 more
2017-06-02 22:56:55,707 | WARN  | tp1621558749-111 | RMCaptureOutInterceptor          | 33 - org.apache.cxf.cxf-core - 3.1.7 | Not ensuring reliability for the transmission of a runtime fault.
2017-06-02 22:56:55,710 | WARN  | tp1621558749-111 | ServletHandler                   | 110 - org.eclipse.jetty.util - 9.2.19.v20160908 | Error for /cxf/greeter-wsrm
javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
	at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:121)[:2.7.0]
	at com.sun.xml.bind.v2.util.XmlFactory.createTransformerFactory(XmlFactory.java:172)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.createTransformer(JAXBContextImpl.java:715)
	at com.sun.xml.bind.v2.runtime.XMLSerializer.getIdentityTransformer(XMLSerializer.java:813)
	at com.sun.xml.bind.v2.runtime.XMLSerializer.writeDom(XMLSerializer.java:805)
	at com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializeListBody(ArrayReferenceNodeProperty.java:116)
	at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:159)
	at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:360)
	at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696)
	at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:158)
	at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:360)
	at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696)
	at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:158)
	at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:160)
	at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:130)
	at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:332)
	at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:339)
	at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:75)
	at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494)
	at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:323)
	at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:251)
	at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:145)
	at org.apache.cxf.ws.rm.EncoderDecoder11Impl.buildHeaderFault(EncoderDecoder11Impl.java:152)
	at org.apache.cxf.ws.rm.EncoderDecoder.buildHeaderFault(EncoderDecoder.java:166)
	at org.apache.cxf.ws.rm.soap.RMSoapOutInterceptor.encodeFault(RMSoapOutInterceptor.java:174)
	at org.apache.cxf.ws.rm.soap.RMSoapOutInterceptor.encode(RMSoapOutInterceptor.java:114)
	at org.apache.cxf.ws.rm.soap.RMSoapOutInterceptor.handleMessage(RMSoapOutInterceptor.java:99)
	at org.apache.cxf.ws.rm.soap.RMSoapOutInterceptor.handleMessage(RMSoapOutInterceptor.java:61)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)[33:org.apache.cxf.cxf-core:3.1.7]
	at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:112)[33:org.apache.cxf.cxf-core:3.1.7]
	at org.apache.cxf.phase.PhaseInterceptorChain.wrapExceptionAsFault(PhaseInterceptorChain.java:366)[33:org.apache.cxf.cxf-core:3.1.7]
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:324)[33:org.apache.cxf.cxf-core:3.1.7]
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[33:org.apache.cxf.cxf-core:3.1.7]
	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:254)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)[17:javax.servlet-api:3.1.0]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)[41:org.apache.cxf.cxf-rt-transports-http:3.1.7]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[108:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[108:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[144:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[106:org.eclipse.jetty.security:9.2.19.v20160908]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[144:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[108:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[144:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.Server.handle(Server.java:499)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[107:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[99:org.eclipse.jetty.io:9.2.19.v20160908]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[110:org.eclipse.jetty.util:9.2.19.v20160908]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[110:org.eclipse.jetty.util:9.2.19.v20160908]
	at java.lang.Thread.run(Thread.java:748)[:1.8.0_131]
2017-06-02 22:56:55,725 | WARN  | ion(3)-127.0.0.1 | PhaseInterceptorChain            | 33 - org.apache.cxf.cxf-core - 3.1.7 | Interceptor for {http://demo.apifocal.org/greeter}GreeterService#{http://demo.apifocal.org/greeter}greetMe has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Response was of unexpected text/html ContentType.  Incoming portion of HTML stream: <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 500 Server Error</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /cxf/greeter-wsrm. Reason:
<pre>    Server Error</pre></p><h3>Caused by:</h3><pre>javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
	at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:121)
	at com.sun.xml.bind.v2.util.XmlFactory.createTransformerFactory(XmlFactory.java:172)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.createTransformer(JAXBContextImpl.java:715)
	at com.sun.xml.bind.v2.runtime.XMLSerializer.getIdentityTransformer(XMLSerializer.java:813)
	at com.sun.xml.bind.v2.runtime.XMLSerializer.writeDom(XMLSerializer.java:805)
	at com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializeListBody(ArrayReferenceNodeProperty.java:116)

[...]
{code}

The fact that the fault the exception is thrown is ok. I think the problem is that it's caught somewhere and sent back as html which messes up the whole stack. Normally the client should be able to catch this and do another CreateSequence out-of-band to get a new Identifier and resend, transparently for the client.

I noticed this behavior when persistence was used, but I could reproduce it without persistence configured as well.





--
This message was sent by Atlassian JIRA
(v6.3.15#6346)