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#4009029
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4009029
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user