Sender is blocked when sending message
ambiente May 22, 2003 7:47 AMHi!
I am not sure if it is me doing something wrong or JBoss behaving strangly...
I am using QueueSender to send a message.
QueueSender.send() method is blocked and wait for some lock to be released.
Here is a thread dump for this thread:
"1053517799889" daemon prio=5 tid=0x8a3ae68 nid=0xa9c waiting for monitor entry [0xb5af000..0xb5afdbc]
at org.jboss.mq.server.BasicQueue.internalAddMessage(BasicQueue.java:552)
at org.jboss.mq.server.BasicQueue.access$000(BasicQueue.java:41)
at org.jboss.mq.server.BasicQueue$1$AddMessagePostCommitTask.run(BasicQueue.java:447)
at org.jboss.mq.pm.TxManager.addPostCommitTask(TxManager.java:121)
at org.jboss.mq.server.BasicQueue.addMessage(BasicQueue.java:457)
at org.jboss.mq.server.PersistentQueue.addMessage(PersistentQueue.java:41)
at org.jboss.mq.server.JMSQueue.addMessage(JMSQueue.java:124)
at org.jboss.mq.server.JMSDestinationManager.addMessage(JMSDestinationManager.java:404)
at org.jboss.mq.server.JMSDestinationManager.addMessage(JMSDestinationManager.java:384)
at org.jboss.mq.server.JMSServerInterceptorSupport.addMessage(JMSServerInterceptorSupport.java:135)
at org.jboss.mq.security.ServerSecurityInterceptor.addMessage(ServerSecurityInterceptor.java:162)
at org.jboss.mq.server.TracingInterceptor.addMessage(TracingInterceptor.java:242)
at org.jboss.mq.server.JMSServerInvoker.addMessage(JMSServerInvoker.java:137)
at org.jboss.mq.il.jvm.JVMServerIL.addMessage(JVMServerIL.java:137)
at org.jboss.mq.Connection.sendToServer(Connection.java:1243)
at org.jboss.mq.SpySession.sendMessage(SpySession.java:699)
at org.jboss.mq.SpyQueueSender.internalSend(SpyQueueSender.java:118)
at org.jboss.mq.SpyQueueSender.send(SpyQueueSender.java:68)
at com.vocognition.util.jms.JmsWorker.send(JmsWorker.java:123)
at com.vocognition.talkface.assignment.GetTaskParametersHandler.handle(GetTaskParametersHandler.java:55)
at com.vocognition.talkface.assignment.TalkmanMDB.onMessage(TalkmanMDB.java:50)
at java.lang.reflect.Method.invoke(Native Method)
at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:434)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:62)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:216)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104)
at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:90)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:348)
at org.jboss.ejb.Container.invoke(Container.java:674)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:732)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1020)
at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:241)
at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:636)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:442)
at org.jboss.mq.SpySession.run(SpySession.java:294)
at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:177)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:732)
at java.lang.Thread.run(Thread.java:484)
May be I am doing something wrong, but I thought that QueueSender.send() method can never be blocked.
Cheers,
Sergey.