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
