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 >
server.log
Description: Binary data