The failure is occuring here in org.jboss.mq.server.ClientConsumer:

  public void addSubscription(Subscription req) throws JMSException
   {
      if( log.isTraceEnabled() )
         log.trace("Adding subscription for: " + req);
      req.connectionToken = connectionToken;
      req.clientConsumer = this;
      
      System.out.println("************ Dustin: about to getJMSDestination in
ClientConsumer *****************");
      JMSDestination jmsdest = (JMSDestination)
server.getJMSDestination(req.destination);
      if (jmsdest == null)
      {
         throw new JMSException("The destination " + req.destination + "
does not exist !");
      }
      
      jmsdest.addSubscriber(req);
      
      synchronized (subscriptions)
      {
         HashMap subscriptionsClone = (HashMap) subscriptions.clone();
         subscriptionsClone.put(new Integer(req.subscriptionId), req);
         subscriptions = subscriptionsClone;
      }
   }

The check for jmsdest == null is passing after the call to
"server.getJMSDestination(req.destination)".  The variable "server" is
defined as a JMSDestinationManager.

The ClientConsumer is calling this code snippet in the
JMSDestinationManager:

   public JMSDestination getJMSDestination(SpyDestination dest)
   {
      System.out.println("********* DESTINATIONS = "  +
destinations.toString() + " ************************");
      return (JMSDestination)destinations.get(dest);
   }

Attached to this message is a snippet from the server.log of my MDB being
deployed.  It also includes my extra debug statements.  You will notice that
when I print the contents of the hashmap, it only is displaying the local
JMS queues that I have defined (in this case, only the DLQ).  My remote
instance of JBoss has all the default JMS queues that JBoss "ships" with
plus one extra called queue/Dustin.

Dustin

> -----Original Message-----
> From: Peter Antman [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, September 26, 2002 4:29 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [JBoss-dev] JMS DestinationManager issue with 
> Remote queues
> and MDB's
> 
> 
> I dont get this. Where is the destination manager used by MDB:s?
> 
> here a couple of snippets from JMSContainerInvoker:
> 
>  // Connect to the JNDI server and get a reference to root context
>       Context context = adapter.getInitialContext();
> ...
>          Topic topic = (Topic)createDestination(Topic.class,
>                                                 context,
>                                                 "topic/" + jndiSuffix,
>                                                 jndiSuffix);
> ...
>    protected Destination createDestination(final Class type,
>                                            final Context ctx,
>                                            final String jndiName,
>                                            final String jndiSuffix)
>       throws Exception
>    {
>       try
>       {
>          // first try to look it up
>          return (Destination)ctx.lookup(jndiName);
>       }
>       catch (NamingException e)
> 
> I.e destinations are looked up in the JNDI context given by 
> the provider
> adapter. What will not work is if the given destination does 
> not exist,
> then a local destination will be created. If the destination exist on
> the remote server, all will work fine (should at least).
> 
> //Peter
> 
> 
> On 25 Sep, Barlow, Dustin wrote:
> > I am using the 3.2.0beta2 CVS version of JBoss and have run 
> into a problem
> > with the JMS DestinationManager.  It appears that the JMS 
> DestinationManager
> > stores in a hashmap the actual queue/topic JNDI names that 
> are then looked
> > up at deployment time by the MDB deployment logic in JBoss. 
>  This works fine
> > for local queues and topics as the internal hashmap that the
> > DestinationManager uses has entries (ie destinations) for 
> each of the local
> > queues that were deployed in the jbossmq-destinations.xml 
> file on startup.
> > However, in the case of remote queues, the hashmap does not 
> have the JNDI
> > names of those queues and thus the MDB deploys with an 
> error saying it
> > cannot find the queue to bind to.
> > 
> > I find this coupling of the MDB deployer to the local 
> DestinationManager odd
> > in that you are allowed to use the ProviderUrl on the 
> JMSProviderLoader
> > service to point to a remote JBoss instance that houses the 
> queues.  I have
> > my MDB confired to use the Remote JMSProviderLoader I 
> setup, and JBoss is
> > deploying the JMSProviderLoader which in turn is binding to 
> the remote JNDI
> > context.  However, the local DestinationManager is still 
> being used in that
> > setup to look up queue names even though it only has local 
> queue names, not
> > the remote ones.  I looked through the JBossMQ code base 
> and really didn't
> > see any way to have the MDB deployer do a "real" JNDI 
> lookup for the queue
> > on a remote host.  It appears that the MDB deployment 
> system is setup to
> > always use the DestinationManager for doing it's JNDI 
> resource lookups.
> > 
> > Any tips would be greatly appreciated.  
> > 
> > Dustin
> > 
> > 
> > -------------------------------------------------------
> > This sf.net email is sponsored by:ThinkGeek
> > Welcome to geek heaven.
> > http://thinkgeek.com/sf
> > _______________________________________________
> > Jboss-development mailing list
> > [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> -- 
> ------------------------------------------------------------
> Peter Antman  Chief Systems Architect, Business Development
> Technology in Media, Box 34105 100 26 Stockholm
> WWW: http://www.tim.se        WWW: http://www.backsource.org
> Email: [EMAIL PROTECTED]      
> Phone: +46-(0)8-506 381 11 Mobile: 070-675 3942 
> ------------------------------------------------------------
> 
> 
> 
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
> 

Attachment: server.log
Description: Binary data

Reply via email to