[jboss-user] [Installation, Configuration & DEPLOYMENT] - Re: JBoss 5.1.0.CR1 classloader isolation issue

zradick do-not-reply at jboss.com
Fri May 8 19:53:08 EDT 2009


In further testing, we installed the Topic producer on a remote JBoss5 server and verified that the client (in a different JBoss5) would receive the message payloads correctly.  This works as expected.

We then put a copy of the Topic producer on the same JBoss5 as the client, but continued to have the client subscribe to the producer on the remote JBoss5 instance.  The results of this seem deeply strange to me...  The initial connection works (as before) and the client proceeds to receive 1 or 2 messages (messages are produced by 2 separate threads within the application system roughly every 60 seconds a piece) with payloads that work (this seems pretty consistent across runs), before the classloader pollution seems to take effect and all further messages received fail.  This is different than the behavior that occurs when the client connects to the local Topic, as in that case all of the messages are polluted.

During one call we received an error on the client:

  | 2009-05-08 15:13:28,484 ERROR [org.jboss.jms.client.container.ClientConsumer] (Thread-24) Failed to deliver message
  | org.jboss.jms.exception.MessagingJMSException: Failed to invoke
  | 	at org.jboss.jms.client.delegate.DelegateSupport.handleThrowable(DelegateSupport.java:271)
  | 	at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:205)
  | 	at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:160)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate.org$jboss$jms$client$delegate$ClientSessionDelegate$acknowledgeDelivery$aop(ClientSessionDelegate.java:186)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate$acknowledgeDelivery_N5825751487881460811.invokeTarget(ClientSessionDelegate$acknowledgeDelivery_N5825751487881460811.java)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
  | 	at org.jboss.jms.client.container.FailoverValveInterceptor.invoke(FailoverValveInterceptor.java:92)
  | 	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  | 	at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
  | 	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate.acknowledgeDelivery(ClientSessionDelegate.java)
  | 	at org.jboss.jms.client.container.SessionAspect.ackDelivery(SessionAspect.java:873)
  | 	at org.jboss.jms.client.container.SessionAspect.handlePostDeliver(SessionAspect.java:352)
  | 	at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect_z_handlePostDeliver_9861267.invoke(SessionAspect_z_handlePostDeliver_9861267.java)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  | 	at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
  | 	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate.postDeliver(ClientSessionDelegate.java)
  | 	at org.jboss.jms.client.container.ClientConsumer.callOnMessage(ClientConsumer.java:253)
  | 	at org.jboss.jms.client.container.ClientConsumer$ListenerRunner.run(ClientConsumer.java:1043)
  | 	at org.jboss.messaging.util.OrderedExecutorFactory$ChildExecutor.run(OrderedExecutorFactory.java:120)
  | 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
  | 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
  | 	at java.lang.Thread.run(Thread.java:619)
  | Caused by: java.lang.IllegalStateException: Cannot find object in dispatcher with id xe-3vnwfhuf-1-8fprehuf-g8atyv-j133o4c5
  | 	at org.jboss.jms.wireformat.SessionAcknowledgeDeliveryRequest.serverInvoke(SessionAcknowledgeDeliveryRequest.java:75)
  | 	at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
  | 	at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
  | 	at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
  | 	at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
  | 	at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
  | 	at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
  | 	at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:211)
  | 	at org.jboss.remoting.Client.invoke(Client.java:1724)
  | 	at org.jboss.remoting.Client.invoke(Client.java:629)
  | 	at org.jboss.remoting.Client.invoke(Client.java:617)
  | 	at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:189)
  | 	... 25 more
  | 
After the error the client re-subscribed to the topic and received three messages that were apparently waiting for it (all of which worked -- they loaded the TypedData class with the local copy), and then all subsequent messages failed.

I am rather confused how it would use the right classloader initially (and also in one case after a failure), but then proceed to use a different one after that...

Any ideas would be helpful.
Thanks,
--Zack

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4229833#4229833

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4229833



More information about the jboss-user mailing list