Connecting MDB to remote topic
paduffy Dec 20, 2007 12:41 PM
Must connect EJB3 MDB in server X to remote topic on server Y. First confirmed that server Y is up and topic deployed (via JMXConsole to Y). I added a Remote provider to deploy/jms-ds.xml on server X. <!-- Remote JMS provider --> <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.messaging:service=JMSProviderLoader,name=RemoteJMSProvider,server=remotehost"> <attribute name="ProviderName">RemoteJMSProvider</attribute> <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute> <!-- The connection factory --> <attribute name="FactoryRef">java:/XAConnectionFactory</attribute> <!-- The queue connection factory --> <attribute name="QueueFactoryRef">java:/XAConnectionFactory</attribute> <!-- The topic factory --> <attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute> <!-- Connect to JNDI on the host "the-remote-host-name" port 1099--> <attribute name="Properties"> java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jnp.interfaces java.naming.provider.url=10.86.147.208:1099 </attribute> </mbean> Annotations on the topic listener MDB as below (running on server X). @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/edgeGroupRequestTopic"), @ActivationConfigProperty(propertyName = "providerAdapterJNDI", propertyValue="java:/RemoteJMSProvider"), @ActivationConfigProperty(propertyName = "maxSession", propertyValue = "60"), // TBD: need ability to setup selector at installation/configuration time. @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "EDU_ID IN ('ALL', 'EDU_0001')")}) AS startup on server X gives the following error when MDB tries to connect to remote topic (typical of a JNDI problem?). 2007-12-19 18:58:37,342 WARN [org.jboss.ejb3.mdb.MessagingContainer] Could not find the topic destination-jndi-name=/topic/edgeGroupRequestTopic 2007-12-19 18:58:37,342 WARN [org.jboss.ejb3.mdb.MessagingContainer] destination not found: topic/topic/edgeGroupRequestTopic reason: javax.naming.NameNotFoundException: topic not bound 2007-12-19 18:58:37,342 WARN [org.jboss.ejb3.mdb.MessagingContainer] creating a new temporary destination: topic/topic/edgeGroupRequestTopic 2007-12-19 18:58:37,358 WARN [org.jboss.system.ServiceController] Problem starting service jboss.j2ee:ear=mdpe-1.0-SNAPSHOT.ear,jar=eduRequestRouter-ejb-1.0-SNAPSHOT.jar,name=EDURequestRouterMDB,service=EJB3 javax.management.InstanceNotFoundException: jboss.mq:service=DestinationManager is not registered. at org.jboss.mx.server.registry.BasicMBeanRegistry.get(BasicMBeanRegistry.java:523) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:653) at org.jboss.ejb3.JmxClientKernelAbstraction.invoke(JmxClientKernelAbstraction.java:44) at org.jboss.ejb3.jms.DestinationManagerJMSDestinationFactory.createDestination(DestinationManagerJMSDestinationFactory.java:75) at org.jboss.ejb3.mdb.MessagingContainer.createTemporaryDestination(MessagingContainer.java:557) at org.jboss.ejb3.mdb.MessagingContainer.createDestination(MessagingContainer.java:496) What am I doing wrong? -------------------- Further DEBUG turned up...llosk like the DefaultJMSProvider is being used tot he remote lookup instead of RemoteJMSProvider? 2007-12-20 11:51:08,744 DEBUG [org.jboss.ejb3.mdb.MessagingContainer] Initializing 2007-12-20 11:51:08,744 DEBUG [org.jboss.ejb3.mdb.MessagingContainer] Looking up provider adapter: java:/DefaultJMSProvider 2007-12-20 11:51:08,744 DEBUG [org.jboss.ejb3.mdb.MessagingContainer] Provider adapter: org.jboss.jms.jndi.JNDIProviderAdapter@1781288 2007-12-20 11:51:08,744 DEBUG [org.jboss.ejb3.mdb.MessagingContainer] context: javax.naming.InitialContext@e8a298 2007-12-20 11:51:08,744 DEBUG [org.jboss.ejb3.mdb.MessagingContainer] Got destination type Topic for EDURequestRouterMDB 2007-12-20 11:51:08,744 DEBUG [org.jboss.ejb3.mdb.MessagingContainer] jndiSuffix: topic/edgeGroupRequestTopic 2007-12-20 11:51:08,744 WARN [org.jboss.ejb3.mdb.MessagingContainer] Could not find the topic destination-jndi-name=/topic/edgeGroupRequestTopic 2007-12-20 11:51:08,744 WARN [org.jboss.ejb3.mdb.MessagingContainer] destination not found: topic/topic/edgeGroupRequestTopic reason: javax.naming.NameNotFoundException: topic not bound 2007-12-20 11:51:08,744 WARN [org.jboss.ejb3.mdb.MessagingContainer] creating a new temporary destination: topic/topic/edgeGroupRequestTopic 2007-12-20 11:51:08,759 DEBUG [org.jboss.ejb3.mdb.MdbDelegateWrapper] Starting failed jboss.j2ee:ear=mdpe-1.0-SNAPSHOT.ear,jar=eduRequestRouter-ejb-1.0-SNAPSHOT.jar,name=EDURequestRouterMDB,service=EJB3 javax.management.InstanceNotFoundException: jboss.mq:service=DestinationManager is not registered. at org.jboss.mx.server.registry.BasicMBeanRegistry.get(BasicMBeanRegistry.java:523) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:653) [code]