We've worked out that a) if JBoss can't find a Queue at the location specified by an MDB's destination-jndi-name, it will create one, and b) it really, really wants it to be in the "queue/" JNDI namespace.
But when we specifically don't want it to go there, it will happily create the Queue where we say - then go ahead and autocreate one in queue/ anyway. Oddly, it appears not to just put "queue/" in front of the name, but to remove the rootmost subcontext as well.
Since our client code is putting messages on a Queue, which exists mecause JBossMQ created it - and on which our MDB is not listening. To whit:
In the MDB's jboss.xml:
This already exists.
Deploy the MDB, and messages to this queue are not being consumed. Looking at the jmx-console, we discover that there's another Queue, just created at queue/aif/AIFAgent/queue. I assume this is what the MDB is listening to, from this thread:
So, one might say, just modify your client code to do what JBoss expects. Thing is though, I don't *want* to. I want to keep everything I do in the joel/ namespace. I deploy my product to multiple app servers, and making concessions to individual platform's weird habits is not my favourite thing. Portability is a big key for me, and normally, JBoss is the platform that gives me the fewest hassles in this regard.
So what's going on?