[jboss-user] [JNDI/Naming/Network] - Remote JMS connection over NAT'ed IP
swatkat1976
do-not-reply at jboss.com
Tue Jul 17 12:00:19 EDT 2007
Hi,
I am trying to connect to a remote JMS queue from my JBoss Server 4.0.3SP1 and using JBossMQ. The other server also hosts JBossMQ.
The machines involved and their IPs are as below:
The client Machine:
Name: XYZ
Config: JBoss Server 4.0.3SP1
Network IP: 122.xx.xx.xx {Say Network MC)
The host machine:
Name: ABC
JBoss Server 4.0.2
Network IP: 60.23.xx.xx {Say Network JS}
JMS Config: JBossMQ and is configured with HAJNDI on port 1100
Connection from Machine ABC to XYZ:
Method: VPN
Host IP: 122.xx.xx.xx {Network MC}
NAT'ed IP: 172.xx.xx.xxx {NATIP}, this IP has port mapping to
Final Destination IP 60.23.xx.xx {Network JS}
Ports Mapped: 1100 and 1099,
I can ping,telnet and access Network JS from Network MC through NATIP
Remote host hajndi-jms-ds.xml file
| <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
| name="jboss.mq:service=JMSProviderLoader,name=HAJNDIJMSProvider">
| <attribute name="ProviderName">DefaultJMSProvider</attribute>
| <attribute name="ProviderAdapterClass">
| org.jboss.jms.jndi.JNDIProviderAdapter
| </attribute>
| <!-- The combined connection factory -->
| <attribute name="FactoryRef">java:/XAConnectionFactory</attribute>
| <!-- The queue connection factory -->
| <attribute name="QueueFactoryRef">XAConnectionFactory</attribute>
| <!-- The topic factory -->
| <attribute name="TopicFactoryRef">XAConnectionFactory</attribute>
| <!-- Access JMS via HAJNDI -->
| <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=<someObscureServer>.com:1100
| </attribute>
| </mbean>
Remote JNDIView Output: using NAT'ed IP http://172.xx.xx.xxx:8080/jmx-console/HtmlAdaptor
java: Namespace
| +- JmsXA
| +- ConnectionFactory
| +- DefaultJMSProvider
| +- XAConnectionFactory
|
| Global JNDI Namespace
| +- ConnectionFactory
| +- HTTPConnectionFactory
| +- XAConnectionFactory
| +- UILXAConnectionFactory[link -> XAConnectionFactory]
| +- UIL2XAConnectionFactory[link -> XAConnectionFactory]
| +- UIL2ConnectionFactory[link -> ConnectionFactory]
| +- UILConnectionFactory[link -> ConnectionFactory]
| +- queue
| | +- A
| | +- DataFeed
|
I have made various attempts to connect to remote JNDI using the configurations below
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Trial 1 JMS Provider on port 1100
jms-ds.xml
| <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.mq:service=JMSProviderLoader,name=RemoteJMSProvider,server=RemoteSite">
| <attribute name="ProviderName">RemoteSiteJMSProvider</attribute>
| <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
| <attribute name="QueueFactoryRef">XAConnectionFactory</attribute>
| <attribute name="TopicFactoryRef">XAConnectionFactory</attribute>
| <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=172.xx.xx.xxx:1100
| </attribute>
| </mbean>
| <tx-connection-factory>
| <jndi-name>JSTJmsXA</jndi-name>
| <rar-name>jms-ra.rar</rar-name>
| <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
| <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Queue</config-property>
| <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/RemoteSiteJMSProvider</config-property>
| </tx-connection-factory>
|
|
Java Code: (Standalone Java Client)
properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
| properties.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
| properties.put("java.naming.provider.url","jnp://localhost:1099");
| initialContext = new InitialContext(properties);
|
| queueConFac = (QueueConnectionFactory) initialContext.lookup("JSTJmsXA");
|
|
Result:
javax.naming.NameNotFoundException: JSTJmsXA not bound
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Trial 2 External Context on port 1100
jms-ds.xml
<mbean code="org.jboss.naming.ExternalContext" name="jboss.jndi:service=ExternalContext,jndiName=jstRemoteJNDI">
| <attribute name="JndiName">jstRemoteJNDI</attribute>
| <attribute name="Properties">
| java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
| java.naming.factory.url.pkgs=org.jnp.interfaces
| java.naming.provider.url=172.xx.xx.xxx:1100
| </attribute>
| <attribute name="InitialContext">javax.naming.InitialContext</attribute>
| <attribute name="RemoteAccess">true</attribute>
| <depends>jboss:service=Naming</depends>
| </mbean>
|
JNDIView Output:
Global JNDI Namespace
| +- jstRemoteJNDI
| error while listing context javax.naming.InitialContext at 1054f93: javax.naming.CommunicationException [Root exception is java.rmi.RemoteException: Service unavailable.]javax.naming.CommunicationException [Root exception is java.rmi.RemoteException: Service unavailable.]
| at org.jnp.interfaces.NamingContext.list(NamingContext.java:797)
|
|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Trial 3 External Context on port 1099
jms-ds.xml
<mbean code="org.jboss.naming.ExternalContext" name="jboss.jndi:service=ExternalContext,jndiName=jstRemoteJNDI">
| <attribute name="JndiName">jstRemoteJNDI</attribute>
| <attribute name="Properties">
| java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
| java.naming.factory.url.pkgs=org.jnp.interfaces
| java.naming.provider.url=172.xx.xx.xxx:1099
| </attribute>
| <attribute name="InitialContext">javax.naming.InitialContext</attribute>
| <attribute name="RemoteAccess">true</attribute>
| <depends>jboss:service=Naming</depends>
| </mbean>
JNDIView Output: {Connection refused to actual Remote IP instead of NAT'ed IP
| +- jstRemoteJNDI
| error while listing context javax.naming.InitialContext at a4be02: javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: 60.23.xx.xx; nested exception is:
| java.net.ConnectException: Connection refused: connect
I have referred to the postings below but have not been able to figure out the problem yet.
http://wiki.jboss.org/wiki/Wiki.jsp?page=HowDoIConfigureTheJMSResourceAdapterToUseARemoteConnectionFactory
http://wiki.jboss.org/wiki/Wiki.jsp?page=HowDoIConfigureAnMDBToTalkToARemoteQueue
http://www.jboss.org/wiki/Wiki.jsp?page=JBossNS
http://www.jboss.org/wiki/Wiki.jsp?page=JBossNSFAQ
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4065064#4065064
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4065064
More information about the jboss-user
mailing list