Details
-
Bug
-
Resolution: Done
-
Major
-
None
-
None
Description
Steps to reproduce:
1. add a <jms-bridge> to standalone-full.xml which depends on local JMS resources for its source or target destinations
2. start the AS7 instance
=> a stack trace is displayed because the JMS bridge is started before the JMS resources are available in the JNDI tree
08:45:59,638 INFO [org.hornetq.core.server.impl.HornetQServerImpl] (MSC service thread 1-1) HornetQ Server version 2.2.18.Final (HQ_2_2_18_FINAL, 122) [166a8a18-c5ec-11e1-b6e6-616f49f3825a]) started 08:45:59,641 INFO [org.hornetq.core.server.impl.HornetQServerImpl] (ServerService Thread Pool -- 63) trying to deploy queue jms.queue.sourceQueue 08:45:59,644 WARNING [org.hornetq.jms.bridge.impl.JMSBridgeImpl] (ServerService Thread Pool -- 61) Failed to connect bridge: javax.naming.NameNotFoundException: queue/sourceQueue -- service jboss.naming.context.java.queue.sourceQueue at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:97) [jboss-as-naming-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT] at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179) [jboss-as-naming-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT] at org.jboss.as.naming.InitialContext.lookup(InitialContext.java:119) [jboss-as-naming-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT] at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:215) [jboss-as-naming-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT] at javax.naming.InitialContext.lookup(InitialContext.java:411) [rt.jar:1.7.0_03-icedtea] at org.hornetq.jms.bridge.impl.JNDIFactorySupport.createObject(JNDIFactorySupport.java:58) [hornetq-jms-2.2.18.Final.jar:2.2.18.Final (HQ_2_2_18_FINAL, 122)] at org.hornetq.jms.bridge.impl.JNDIDestinationFactory.createDestination(JNDIDestinationFactory.java:40) [hornetq-jms-2.2.18.Final.jar:2.2.18.Final (HQ_2_2_18_FINAL, 122)] at org.hornetq.jms.bridge.impl.JMSBridgeImpl.setupJMSObjects(JMSBridgeImpl.java:1124) [hornetq-jms-2.2.18.Final.jar:2.2.18.Final (HQ_2_2_18_FINAL, 122)] at org.hornetq.jms.bridge.impl.JMSBridgeImpl.start(JMSBridgeImpl.java:358) [hornetq-jms-2.2.18.Final.jar:2.2.18.Final (HQ_2_2_18_FINAL, 122)] at org.jboss.as.messaging.jms.bridge.JMSBridgeService.startBridge(JMSBridgeService.java:92) [jboss-as-messaging-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT] at org.jboss.as.messaging.jms.bridge.JMSBridgeService$1.run(JMSBridgeService.java:78) [jboss-as-messaging-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_03-icedtea] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_03-icedtea] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_03-icedtea] at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.0.0.GA.jar:2.0.0.GA] 08:45:59,649 WARNING [org.hornetq.jms.bridge.impl.JMSBridgeImpl] (ServerService Thread Pool -- 61) Failed to start bridge
The JMS Bridge service has a dependency on the HornetQ service when one of its resources (source or target) is local but the JMS resources are bound to JNDI asynchronously after the HornetQ server is started.
The JMS bridge service should instead check whether its JMS resources are local or not. If they are local, it should add a direct dependency to the corresponding binder service (for both destination and CF resource)