1 Reply Latest reply on Feb 10, 2005 4:17 AM by jskeet

    [JMS]Deploying multiple DestinationManagers

    jskeet

      [Background: JBoss 4.0.1, JDK 1.5.0.1, Windows XP Pro]

      I'm trying to write an application which can be added to an absolutely stock JBoss installation, but which will use an extra (named) DestinationManager, with a different persistence manager etc from the default.

      I've created the destination manager, persistence manager, state manager and message cache, just by adding ",name=MyDestinationManager" etc to a copy of each of the relevant sections. I've then created a queue with a specific name, and told it to use the new DestinationManager.

      I also have an EAR which contains an MDB which tries to use the queue. Unfortunately, at runtime I get:

      08:10:38,763 WARN [JMSContainerInvoker] JMS provider failure detected:
      javax.jms.InvalidDestinationException: The destination QUEUE.MyQueueName does not exist !
      at org.jboss.mq.server.ClientConsumer.addSubscription(ClientConsumer.java:131)
      at org.jboss.mq.server.JMSDestinationManager.subscribe(JMSDestinationManager.java:613)
      at org.jboss.mq.server.JMSServerInterceptorSupport.subscribe(JMSServerInterceptorSupport.java:297)
      at org.jboss.mq.security.ServerSecurityInterceptor.subscribe(ServerSecurityInterceptor.java:142)
      (etc)


      Looking at the server log, it looks like at least something is working. Shortly before the exception (and just after creating the DLQHandler), there are the following lines:

      2005-02-10 08:10:38,638 DEBUG [org.jboss.ejb.plugins.jms.JMSContainerInvoker] context: javax.naming.InitialContext@fade06
      2005-02-10 08:10:38,638 DEBUG [org.jboss.ejb.plugins.jms.JMSContainerInvoker] jndiSuffix: MyQueueName
      2005-02-10 08:10:38,638 DEBUG [org.jboss.ejb.plugins.jms.JMSContainerInvoker] Got destination type Queue for MyMDB

      After that there's some connection factory and StdServerSessionPool logging, then:

      2005-02-10 08:10:38,747 DEBUG [org.jboss.jms.asf.StdServerSessionPool] Server Session pool set up
      2005-02-10 08:10:38,747 DEBUG [org.jboss.ejb.plugins.jms.JMSContainerInvoker] Server session pool: org.jboss.jms.asf.StdServerSessionPool@6159c4
      2005-02-10 08:10:38,763 WARN [org.jboss.ejb.plugins.jms.JMSContainerInvoker] JMS provider failure detected:
      javax.jms.InvalidDestinationException: The destination QUEUE.MyQueueName does not exist !
      at org.jboss.mq.server.ClientConsumer.addSubscription(ClientConsumer.java:131)
      (etc)

      SUSPECTED ROOT CAUSE:
      When catching the exception in the debugger, it looks like it's using the wrong DestinationManager - in other words, the default one.

      So, am I missing a step, does JBoss not support multiple DestinationManagers, or is it likely to be a bug I could help fix?

      Jon Skeet

        • 1. Re: [JMS]Deploying multiple DestinationManagers
          jskeet

          Okay, to answer my own question partially, I've found the configuration in jbossmq-service.xml which builds up the list of interceptors. It's then referred to in jvm-il-service.xml and uil2-service.xml.

          So presumably I need to create another JVM-IL service, another Invoker, another TracingInterceptor, another SecurityManager, hook them all together, and then ... how do I get my EAR file to use the different Invoker?

          I'm sure all this is doable, but it feels a bit too much, when I really just want to have a different persistence/state manager for my own queues. I suspect I'm missing something - anyone care to enlighten me?

          Jon Skeet