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

[jira] [Commented] (CXF-7391) WS-RM: ISE excpetion after server reconnect

    [ https://issues.apache.org/jira/browse/CXF-7391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16043114#comment-16043114 ] 

Daniel Kulp commented on CXF-7391:
----------------------------------

I do not believe this is a CXF problem.   The issue is in your test case.

The service bundle is creating a Bus (in the blueprint file) that has the required WS-RM stuff and it's ending up setting the default bus to that bus as it's the only bus created.    The client created in the test case is NOT creating a bus, thus the JaxWsProxyFactoryBean is grabbing the same bus as above.  When the bundle is refreshed, the bus is shutdown.   Thus, the client cannot rely on anything in that bus still working.   

The simple fix is to add:
{code}
        Bus bus = BusFactory.newInstance().createBus();
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setBus(bus);
{code}
to the place where the client is created to make sure the client has it's own bus that is not shutdown.

> WS-RM: ISE excpetion after server reconnect
> -------------------------------------------
>
>                 Key: CXF-7391
>                 URL: https://issues.apache.org/jira/browse/CXF-7391
>             Project: CXF
>          Issue Type: Bug
>          Components: WS-* Components
>    Affects Versions: 3.1.7, 3.1.10
>            Reporter: Hadrian Zbarcea
>             Fix For: Invalid
>
>
> This is for a regular WS-RM scenario, traffic takes place normally, and then the server disconnects. After the server restart, the client continues to send messages using the known sequence id, but the first message gets rejected (rightfully so) with the following stack:
> {code:Title=Karaf logs}
> 2017-06-02 22:56:53,517 | INFO  | ion(3)-127.0.0.1 | GreeterService                   | 93 - org.apifocal.demo.wsrm.greeter-service - 1.0.0.SNAPSHOT | Greeter service starting...
> 2017-06-02 22:56:53,522 | INFO  | ion(3)-127.0.0.1 | 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=Bus,instance.id=189207851: org.apache.cxf.bus.ManagedBus@2688afbd
> 2017-06-02 22:56:53,522 | INFO  | ion(3)-127.0.0.1 | 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=Bus,instance.id=189207851: javax.management.modelmbean.RequiredModelMBean@10a214ea
> 2017-06-02 22:56:53,523 | INFO  | ion(3)-127.0.0.1 | InstrumentationManagerImpl       | 40 - org.apache.cxf.cxf-rt-management - 3.1.7 | registered org.apache.cxf:bus.id=org.apifocal.demo.wsrm.greeter-wsrm-cxf189207851,type=Bus,instance.id=189207851
> 2017-06-02 22:56:53,523 | INFO  | ion(3)-127.0.0.1 | 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.Manager,instance.id=752558607: org.apache.cxf.ws.rm.ManagedRMManager@1f0684f2
> 2017-06-02 22:56:53,525 | INFO  | ion(3)-127.0.0.1 | 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.Manager,instance.id=752558607: javax.management.modelmbean.RequiredModelMBean@7c9035e8
> 2017-06-02 22:56:53,526 | INFO  | ion(3)-127.0.0.1 | 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,WorkQueueManager=Bus.WorkQueueManager,type=WorkQueueManager,instance.id=2081782740: org.apache.cxf.bus.managers.WorkQueueManagerImplMBeanWrapper@92bf503
> 2017-06-02 22:56:53,527 | INFO  | ion(3)-127.0.0.1 | 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,WorkQueueManager=Bus.WorkQueueManager,type=WorkQueueManager,instance.id=2081782740: javax.management.modelmbean.RequiredModelMBean@2221c1c0
> 2017-06-02 22:56:53,530 | INFO  | ion(3)-127.0.0.1 | ReflectionServiceFactoryBean     | 46 - org.apache.cxf.cxf-rt-wsdl - 3.1.7 | Creating Service {http://demo.apifocal.org/greeter/wsrm}GreeterService from WSDL: META-INF/wsdl/org/apifocal/demo/greeter/wsrm/greeter.wsdl
> 2017-06-02 22:56:53,557 | INFO  | ion(3)-127.0.0.1 | ServerImpl                       | 33 - org.apache.cxf.cxf-core - 3.1.7 | Setting the server's publish address to be /greeter-wsrm
> 2017-06-02 22:56:53,557 | INFO  | ion(3)-127.0.0.1 | 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=Bus.Service.Endpoint,service="{http://demo.apifocal.org/greeter/wsrm}GreeterService",port="GreeterPort",instance.id=953867382: org.apache.cxf.endpoint.ManagedEndpoint@b7bb49d
> 2017-06-02 22:56:53,558 | INFO  | ion(3)-127.0.0.1 | 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=Bus.Service.Endpoint,service="{http://demo.apifocal.org/greeter/wsrm}GreeterService",port="GreeterPort",instance.id=953867382: javax.management.modelmbean.RequiredModelMBean@201cfe0
> 2017-06-02 22:56:55,563 | INFO  | ion(3)-127.0.0.1 | RMCaptureOutInterceptor          | 45 - org.apache.cxf.cxf-rt-ws-rm - 3.1.7 | Captured message 4 in sequence urn:uuid:e4cc49cd-0da2-4f23-acbf-a2896305cfda
> 2017-06-02 22:56:55,564 | WARN  | ion(3)-127.0.0.1 | RetransmissionQueueImpl          | 45 - org.apache.cxf.cxf-rt-ws-rm - 3.1.7 | Scheduling of WS-RM retransmission failed.
> java.lang.IllegalStateException: Timer already cancelled.
> 	at java.util.Timer.sched(Timer.java:397)[:1.8.0_131]
> 	at java.util.Timer.schedule(Timer.java:208)[:1.8.0_131]
> 	at org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl$ResendCandidate.schedule(RetransmissionQueueImpl.java:651)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
> 	at org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl$ResendCandidate.<init>(RetransmissionQueueImpl.java:452)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
> 	at org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl.cacheUnacknowledged(RetransmissionQueueImpl.java:350)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
> 	at org.apache.cxf.ws.rm.soap.RetransmissionQueueImpl.addUnacknowledged(RetransmissionQueueImpl.java:134)[45:org.apache.cxf.cxf-rt-ws-rm:3.1.7]
> 	at org.apache.cxf.ws.rm.RMCaptureOutInterceptor$CaptureEnd.handleMessage(RMCaptureOutInterceptor.java:277)[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.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)[33:org.apache.cxf.cxf-core:3.1.7]
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)[33:org.apache.cxf.cxf-core:3.1.7]
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324)[33:org.apache.cxf.cxf-core:3.1.7]
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277)[33:org.apache.cxf.cxf-core:3.1.7]
> 	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)[39:org.apache.cxf.cxf-rt-frontend-simple:3.1.7]
> 	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)[38:org.apache.cxf.cxf-rt-frontend-jaxws:3.1.7]
> 	at com.sun.proxy.$Proxy89.greetMe(Unknown Source)
> 	at org.apifocal.demo.wsrm.itests.GreeterClientTest.testCall(GreeterClientTest.java:95)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_131]
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_131]
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_131]
> 	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_131]
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> 	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
> 	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> 	at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runLeafWithRetry(ContainerTestRunner.java:97)
> 	at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChildWithRetry(ContainerTestRunner.java:84)
> 	at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:75)
> 	at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:44)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
> 	at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:124)
> 	at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:97)
> 	at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:73)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_131]
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_131]
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_131]
> 	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_131]
> 	at org.ops4j.pax.exam.rbc.internal.RemoteBundleContextImpl.remoteCall(RemoteBundleContextImpl.java:83)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_131]
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_131]
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_131]
> 	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_131]
> 	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)[:1.8.0_131]
> 	at sun.rmi.transport.Transport$1.run(Transport.java:200)[:1.8.0_131]
> 	at sun.rmi.transport.Transport$1.run(Transport.java:197)[:1.8.0_131]
> 	at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_131]
> 	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)[:1.8.0_131]
> 	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)[:1.8.0_131]
> 	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)[:1.8.0_131]
> 	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)[:1.8.0_131]
> 	at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_131]
> 	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)[:1.8.0_131]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_131]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_131]
> 	at java.lang.Thread.run(Thread.java:748)[:1.8.0_131]
> {code}
> This is configured all the way back to the client. Depending on the ws-rm configuration one can experience different behaviors. With a simple ws-rm configuration there is a workaround by ignoring the error in the app and re-sending the request, but that's defeating the purpose.



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