3 Replies Latest reply on Mar 4, 2004 10:40 AM by javajedi

    Can't redeploy my HAJMS queue

      I have a HAJMS queue as part of my ear deployment. The deployment is farmed out to my cluster, and at startup, clients throughout the cluster connect to this queue. When I redeploy my ear, the deployment fails because some of the cluster nodes that haven't received the new deployment yet are still listening to the HAJMS queue, so the undeploy step for this queue fails with the following exception:

      2004-03-03 15:06:34,938 ERROR [org.jboss.mq.server.jmx.Queue.TestWork] Destroying failed
      javax.jms.JMSException: The destination is being used.
      at org.jboss.mq.server.JMSDestinationManager.closeDestination(JMSDestinationManager.java:807)
      at org.jboss.mq.server.jmx.DestinationMBeanSupport.destroyService(DestinationMBeanSupport.java:142)
      at org.jboss.system.ServiceMBeanSupport.destroy(ServiceMBeanSupport.java:284)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
      at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:976)
      at $Proxy40.destroy(Unknown Source)
      at org.jboss.system.ServiceController.destroy(ServiceController.java:531)
      at sun.reflect.GeneratedMethodAccessor48.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
      at $Proxy4.destroy(Unknown Source)
      at org.jboss.deployment.SARDeployer.destroy(SARDeployer.java:408)
      at org.jboss.deployment.MainDeployer.destroy(MainDeployer.java:522)
      at org.jboss.deployment.MainDeployer.destroy(MainDeployer.java:538)
      at org.jboss.deployment.MainDeployer.undeploy(MainDeployer.java:473)
      at org.jboss.deployment.MainDeployer.undeploy(MainDeployer.java:467)
      at org.jboss.deployment.MainDeployer.undeploy(MainDeployer.java:440)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
      at $Proxy38.undeploy(Unknown Source)
      at org.jboss.deployment.scanner.URLDeploymentScanner.undeploy(URLDeploymentScanner.java:332)
      at org.jboss.ha.framework.server.FarmMemberService.undeploy(FarmMemberService.java:434)
      at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:452)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:201)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:212)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:191)

      Is this a bug? It seems like an HAJMS destination should be able to be undeployed even if a client is connected to it. Ivelin's instructions at http://www.cocoonhive.org/articles/jboss/20031125/JBoss32-hajms.html tell you that you should expect to handle this situation on the client side anyway.