It seems that with JBoss AS 6.0.0.Final I can't connect to JMS before the application server itself has started up completely. I'm using the InitialContext approach as I can't use Message Driven Beans in the project.
I created a JMS Topic in [jboss-home]/server/default/deploy/hornetq/hornetq-jms.xml as follows:
<topic name="MyTopic">
<entry name="/topic/test"/>
</topic>
Next I'm trying to connect to JMS from my JMSServlet's init(ServletConfig) method, but that seems to fail when executing the JMS detection on the original thread (that is the thread supplied by the application server) as follows:
Unable to validate user: null for check type CREATE_NON_DURABLE_QUEUE for address jms.topic.MyTopic
I'd prefer not having to specify the user/password, but even if I do it fails in a similar fashion:
Unable to validate user: guest for check type CREATE_NON_DURABLE_QUEUE for address jms.topic.MyTopic
When I do the detection of JMS on a seperate thread it eventually seems to work, as long as the application server started up completely. However, timing is then a bit undeterministic. When running this test on earlier versions of JBoss AS, namely 5 and 4, or other application servers the detection seems to succeed on the first try on the original thread.
Why does JBoss AS 6.0.0.Final behave differently? Is there some configuration I am missing? Is this a potential bug?
I'll attach my JMS Test application which tries to connect to JMS using 6 different strategies:
- On original thread
- On original thread after sleep
- On spawned thread with await/signal
- On spawned thread with await/signal after sleep
- On spawned thread without await/signal
- On spawned thread without await/signal after sleep
The source is included in the jmstest.war file.
Regards,
Jack