mdb connecting to remote durable topic causes jboss to hang
toeev Jun 2, 2005 4:38 AMhello,
i'm having a problem when i try to have an mdb connect to a remote durable topic. jboss hangs after creating the topic connection. my environment is:
mdbhost - win xp; jboss 4.0.1
remotehost - win 2000; jboss 4.0.1
with TRACE enabled on the mdbhost this is how the log output ends:
14:23:57,875 DEBUG [ServiceController] starting service jboss.j2ee:jndiName=local/SubscribedToRemoteTopicMDB,plugin=pool,service=EJB 14:23:57,875 DEBUG [MessageDrivenInstancePool] Starting jboss.j2ee:jndiName=local/SubscribedToRemoteTopicMDB,plugin=pool,service=EJB 14:23:57,875 DEBUG [MessageDrivenInstancePool] Started jboss.j2ee:jndiName=local/SubscribedToRemoteTopicMDB,plugin=pool,service=EJB 14:23:57,875 DEBUG [ServiceController] Starting dependent components for: jboss.j2ee:jndiName=local/SubscribedToRemoteTopicMDB,plugin=pool,service=EJB dependent components: [] 14:23:57,875 DEBUG [CachedConnectionInterceptor] start called in CachedConnectionInterceptor 14:23:57,875 DEBUG [ServiceController] starting service jboss.j2ee:binding=remote-mdb-invoker,jndiName=local/SubscribedToRemoteTopicMDB,plugin=invoker,service=EJB 14:23:57,875 DEBUG [JMSContainerInvoker] Starting jboss.j2ee:binding=remote-mdb-invoker,jndiName=local/SubscribedToRemoteTopicMDB,plugin=invoker,service=EJB 14:23:57,875 DEBUG [JMSContainerInvoker] Initializing 14:23:57,875 DEBUG [JMSContainerInvoker] Looking up provider adapter: java:/RemoteJMSProvider 14:23:57,875 DEBUG [JMSContainerInvoker] Provider adapter: org.jboss.jms.jndi.JNDIProviderAdapter@1eb717e 14:23:57,875 DEBUG [DLQHandler] Creating DLQHandler 14:23:57,875 DEBUG [DLQHandler] Using factory: org.jboss.mq.SpyXAConnectionFactory@1886a34 14:23:57,875 DEBUG [DLQHandler] Created connection: Connection@30662761[token=ConnectionToken:null/c3e2c8b8374797aff8a382888cb553d1 rcvstate=STOPPED]
the mdbhost jboss hangs at this point. if i try to connect to it with a client i get a javax.naming.NameNotFoundException. there are no error messages on the remotehost jboss.
using the active ports utility i can see that mdbhost has a connection with remotehost on port 2003 (the jnp port) in the ESTABLISHED state.
i do have mdbs on mdbhost that are subscribed to durable topics on mdbhost with no problem. messages are sent and received.
any ideas on what the problem with the remote durable topic could be?
my configuration files follow:
remote-jms-ds.xml
<server> <!-- The JMS provider loader --> <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.mq:service=JMSProviderLoader,name=RemoteJMSProvider,server=remotehost"> <attribute name="ProviderName">RemoteJMSProvider</attribute> <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute> <!-- The queue connection factory --> <attribute name="QueueFactoryRef">java:/XAConnectionFactory</attribute> <!-- The topic factory --> <attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute> <!-- Connect to HAJNDI on the remote host --> <attribute name="Properties"> java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=remotehost:2003 </attribute> </mbean> </server>
jboss.xml
<jboss> <enterprise-beans> <session> </session> <message-driven> <ejb-name>SubscribedToRemoteTopicMDB</ejb-name> <destination-jndi-name>topic/DurableTopic</destination-jndi-name> <mdb-user>guest</mdb-user> <mdb-passwd>guest</mdb-passwd> <mdb-client-id>com.SubscribedToRemoteTopicMDB</mdb-client-id> <mdb-subscription-id>MDB</mdb-subscription-id> <invoker-bindings> <invoker> <invoker-proxy-binding-name>remote-mdb-invoker</invoker-proxy-binding-name> </invoker> </invoker-bindings> </message-driven> </enterprise-beans> <resource-managers> </resource-managers> <invoker-proxy-bindings> <invoker-proxy-binding> <name>remote-mdb-invoker</name> <invoker-mbean>remote-invoker-mbean</invoker-mbean> <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory> <proxy-factory-config> <JMSProviderAdapterJNDI>RemoteJMSProvider</JMSProviderAdapterJNDI> <ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI> <MinimumSize>1</MinimumSize> <KeepAliveMillis>30000</KeepAliveMillis> <MaximumSize>15</MaximumSize> <MaxMessages>1</MaxMessages> <MDBConfig> <ReconnectIntervalSec>10</ReconnectIntervalSec> <DLQConfig> <DestinationQueue>queue/DLQ</DestinationQueue> <MaxTimesRedelivered>10</MaxTimesRedelivered> <TimeToLive>0</TimeToLive> </DLQConfig> </MDBConfig> </proxy-factory-config> </invoker-proxy-binding> </invoker-proxy-bindings> </jboss>
durabletopic-destination-service.xml
<server> <mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=DurableTopic"> <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends> <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends> </mbean> </server>
ejb-jar.xml
<ejb-jar > <enterprise-beans> <!-- Session Beans --> <session > </session> <!-- Message Driven Beans --> <message-driven > <ejb-name>SubscribedToRemoteTopicMDB</ejb-name> <ejb-class>com.SubscribedToRemoteTopicMDB</ejb-class> <transaction-type>Container</transaction-type> <acknowledge-mode>Auto-acknowledge</acknowledge-mode> <message-driven-destination> <destination-type>javax.jms.Topic</destination-type> <subscription-durability>Durable</subscription-durability> </message-driven-destination> </message-driven> </enterprise-beans> <!-- Assembly Descriptor --> <assembly-descriptor > </assembly-descriptor> </ejb-jar>