JBoss 4.0.4GA + Messaging 1.0.1SP2
I created a simple MDB that listen to a topic. When deployed, it all looks okay. But about
30 seconds later after the deployment, the JBoss console dumps out an warning message
followed by error stack trace. It seems that the messaging service is trying to close a
connection that it thinks has been out for too long. Then it errors out with a
"Failed to obtain lock" when trying to close the connection.
The output:
| 14:58:46,340 INFO server.Server - JBoss (MX MicroKernel) [4.0.4.GA (build:
CVSTag=JBoss_4_0_4_GA date=200605151000)] Started in 38s:167ms
| 14:59:21,133 WARN connectionmanager.SimpleConnectionManager - A problem has been
detected with the connection to remote client 4co2mt-16t2uo-exm8rsfy-1-exm8s4c4-5. It is
possible the client has exited without closing its connection(s) or there is a network
problem. All connection resources corresponding to that client process will now be
removed.
|
| 14:59:21,153 ERROR util.ExceptionUtil - ConsumerEndpoint[-2147483628] close
[4co2mt-16t2uo-exm8rsfy-1-exm8t0on-h]
| java.lang.RuntimeException: Failed to obtain lock
| at
org.jboss.messaging.core.local.PointToMultipointRouter.remove(PointToMultipointRouter.java:166)
| at org.jboss.messaging.core.local.Topic.remove(Topic.java:126)
| at
org.jboss.messaging.core.local.CoreSubscription.disconnect(CoreSubscription.java:111)
| at
org.jboss.jms.server.endpoint.ServerConsumerEndpoint.close(ServerConsumerEndpoint.java:360)
| at
org.jboss.jms.server.endpoint.ServerConsumerEndpoint.remove(ServerConsumerEndpoint.java:543)
| at
org.jboss.jms.server.endpoint.ServerSessionEndpoint.close(ServerSessionEndpoint.java:403)
| at
org.jboss.jms.server.endpoint.ServerConnectionEndpoint.close(ServerConnectionEndpoint.java:300)
| at
org.jboss.jms.server.connectionmanager.SimpleConnectionManager.handleClientFailure(SimpleConnectionManager.java:158)
| at
org.jboss.jms.server.connectionmanager.SimpleConnectionManager.handleConnectionException(SimpleConnectionManager.java:208)
| at
org.jboss.remoting.ConnectionNotifier.connectionLost(ConnectionNotifier.java:46)
| at org.jboss.remoting.Lease$LeaseTimerTask.execute(Lease.java:133)
| at org.jboss.util.TimerQueue$TimerTaskLoop.run(TimerQueue.java:181)
| at java.lang.Thread.run(Thread.java:595)
| Caused by: java.lang.InterruptedException
| at
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock.acquire(WriterPreferenceReadWriteLock.java:234)
| at
org.jboss.messaging.core.local.PointToMultipointRouter.remove(PointToMultipointRouter.java:161)
| ... 12 more
| 14:59:21,153 ERROR util.ExceptionUtil - SessionEndpoint[-2147483629] close
[4co2mt-16t2uo-exm8rsfy-1-exm8t0ox-i]
| org.jboss.jms.util.MessagingJMSException: A failure has occurred during processing of
the request. Please consult the server logs for more details.
ConsumerEndpoint[-2147483628] close [4co2mt-16t2uo-e
| xm8rsfy-1-exm8t0on-h]
| at
org.jboss.jms.util.ExceptionUtil.handleJMSInvocation(ExceptionUtil.java:72)
| at
org.jboss.jms.server.endpoint.ServerConsumerEndpoint.close(ServerConsumerEndpoint.java:377)
| at
org.jboss.jms.server.endpoint.ServerConsumerEndpoint.remove(ServerConsumerEndpoint.java:543)
| at
org.jboss.jms.server.endpoint.ServerSessionEndpoint.close(ServerSessionEndpoint.java:403)
| at
org.jboss.jms.server.endpoint.ServerConnectionEndpoint.close(ServerConnectionEndpoint.java:300)
| at
org.jboss.jms.server.connectionmanager.SimpleConnectionManager.handleClientFailure(SimpleConnectionManager.java:158)
| at
org.jboss.jms.server.connectionmanager.SimpleConnectionManager.handleConnectionException(SimpleConnectionManager.java:208)
| at
org.jboss.remoting.ConnectionNotifier.connectionLost(ConnectionNotifier.java:46)
| at org.jboss.remoting.Lease$LeaseTimerTask.execute(Lease.java:133)
| at org.jboss.util.TimerQueue$TimerTaskLoop.run(TimerQueue.java:181)
| at java.lang.Thread.run(Thread.java:595)
|
Note that there is no message delivered published to the topic at all.
Here is the EJB3 MDB I deployed:
| @MessageDriven(
| name = "NotificationMDB",
| activationConfig = {
| @ActivationConfigProperty(propertyName = "destinationType", propertyValue
= "javax.jms.Topic"),
| @ActivationConfigProperty(propertyName = "destination", propertyValue =
"topic/Notification"),
| @ActivationConfigProperty(propertyName = "user", propertyValue =
"user"),
| @ActivationConfigProperty(propertyName = "password", propertyValue =
"pass"),
| @ActivationConfigProperty(propertyName = "noLocal", propertyValue =
"true") })
| @ResourceAdapter("jms-ra.rar")
| public class NotificationMDB extends BaseServiceBean implements MessageListener {
|
| public void onMessage(Message message) {
| System.out.println("=========\nMDB message received: " +
message.toString() + "\n===========");
| }
| }
|
I am not doing anything abnormal. It seems that the messaging code is forcing the
connections to be closed after about 30 seconds. It should not be doing it as a topic
subscriber or queue consumer may connect to the topic / queue for a fairly long time.
The @ResourceAdaptor annotation I put there does not have any effect on this problem.
I feel this should be fairly basic. Any one who is deploying a MDB would have probably
seen it. Please help if you know anything about this.
Thank you.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4009029#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...