I create a temporary queue for each new client connecting to my "server" (a service 
running in JBoss). On the server side, I call 
TemporaryQueue q = qsession.createTemporaryQueue();
and than pass the value of 
tempQueueTopic = q.getQueueName ();
back to the client.

The client than calls 
Queue queue = qsession.createQueue (tempQueueTopic);
to connect to the same queue.

The question is how/when does this temp queue get destroyed? Specifically, let's 
consider using JMS over HTTP (using HTTPServerILServlet). Suppose a client has 
conencted to the temp queue above and then termined ungracefully (without closing the 
connection). What I'm seeing is that somehow the sevlet is holding on to this JMS 
connection such that if I attempt to call TemporaryQueue.delete() on the server (after 
closing all server-side senders/receivers for this queue) I get the following 
exception:

org.jboss.mq.SpyJMSException: Cannot delete the TemporaryQueue; - nested throwable: 
(org.jboss.mq.SpyJMSException: Cannot delete the TemporaryDestination; - nested 
throwable: (javax.jms.JMSExcept
ion: Cannot delete temporary queue, it is in use.))
        at org.jboss.mq.SpyTemporaryQueue.delete(SpyTemporaryQueue.java:73)
...
Caused by: javax.jms.JMSException: Cannot delete temporary queue, it is in use.
        at 
org.jboss.mq.server.JMSDestinationManager.deleteTemporaryDestination(JMSDestinationManager.java:715)
        at 
org.jboss.mq.server.JMSServerInterceptorSupport.deleteTemporaryDestination(JMSServerInterceptorSupport.java:174)
        at 
org.jboss.mq.security.ServerSecurityInterceptor.deleteTemporaryDestination(ServerSecurityInterceptor.java:217)
        at 
org.jboss.mq.server.TracingInterceptor.deleteTemporaryDestination(TracingInterceptor.java:396)
        at 
org.jboss.mq.server.JMSServerInvoker.deleteTemporaryDestination(JMSServerInvoker.java:174)
        at 
org.jboss.mq.il.jvm.JVMServerIL.deleteTemporaryDestination(JVMServerIL.java:177)
        at org.jboss.mq.Connection.deleteTemporaryDestination(Connection.java:483)
        ... 52 more

So, essentially what I'm asking is 
1. Should I call tempQueue.delete () at all, or simply close all senders/receivers and 
hope that some sort of reference counting mechanism will destroy the queue?
2. With HTTP IL, will the proxy sender/receiver be closed automatically when the 
client just dies without closing the session explicitely?

Thanks,
Yuri




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

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


-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to