[jboss-user] [Messaging, JMS & JBossMQ] - JMS Queue works on localhost, but not remote server

ozorhan do-not-reply at jboss.com
Mon Oct 22 17:01:54 EDT 2007


Hello,

I have a JMS queue, which I've defined as follows:

in jbossmq-destinations-service.xml

<mbean code="org.jboss.mq.server.jmx.Queue"
  |      name="jboss.mq.destination:service=Queue,name=myQueue">
  |     <depends optional-attribute-name="DestinationManager"> jboss.mq:service=DestinationManager</depends>
  |     <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends>
  |     <attribute name="MessageCounterHistoryDayLimit">-1</attribute>
  |     <attribute name="SecurityConf">
  |       <security>
  |         <role name="guest" read="true" write="true"/>
  |         <role name="publisher" read="true" write="true" create="false"/>
  |         <role name="noacc" read="false" write="false" create="false"/>
  |       </security>
  |     </attribute>
  |   </mbean>

in jms-ds.xml
  <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
  |          name="jboss.mq:service=JMSProviderLoader,name=JMSProvider">
  |     <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">java:/XAConnectionFactory</attribute>
  |     <!-- The topic factory -->
  |     <attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute>
  |     <!-- Uncomment to use HAJNDI to access JMS
  |     <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=localhost:1100
  |     </attribute>
  |     -->
  |   </mbean>
  | 

and in the server side java file

			
// Create the queue properties
  | Properties properties = new Properties();
  | 		
  | // Set the context properties
  | properties = new Properties();
  | properties.put(Context.INITIAL_CONTEXT_FACTORY,
  | 	"org.jnp.interfaces.NamingContextFactory");
  | properties.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
  | properties.put(Context.PROVIDER_URL, "localhost");
  | 	
  | // STEP I - Create Regular Queue
  | // Initialize the context
  | incomingContext = new InitialContext(properties);
  | 
  | // Obtain the JMS queue
  | incomingQueue = (Queue) incomingContext.lookup("queue/myQueue");
  | // Create the connection factory connection and the connection session 
  | incomingConnectionFactory = (QueueConnectionFactory) incomingContext.lookup("UIL2ConnectionFactory");
  | 
  | incomingQueueConnection = incomingConnectionFactory.createQueueConnection();
  | 
  | incomingQueueConnection.start();
  | 
  | incomingQueueSession = incomingQueueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  | 
  | // Create the JMS Sender
  | incomingQueueReceiver = incomingQueueSession.createReceiver(incomingQueue);

I use the following code in the client to connect to the server's JMS queue:

  | // Create the queue properties
  | properties = new Properties();
  | 
  | // Set the context properties
  | properties = new Properties();
  | properties.put(Context.INITIAL_CONTEXT_FACTORY,
  | "org.jnp.interfaces.NamingContextFactory");
  | properties.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
  | properties.put(Context.PROVIDER_URL, "SERVER_IP_ADDRESS");
  | 
  | // STEP I - Create Regular Queue
  | // Initialize the context
  | incomingContext = new InitialContext(properties);
  | 
  | // Obtain the JMS queue
  | outgoingQueue = (Queue) outgoingContext
  | .lookup("queue/myQueue");
  | 
  | // Create the connection factory connection and the connection
  | // session
  | incomingConnectionFactory = (QueueConnectionFactory) incomingContext
  | .lookup("UIL2ConnectionFactory");
  | incomingQueueConnection = incomingConnectionFactory
  | .createQueueConnection();
  | 
  | incomingQueueConnection.start();
  | 
  | incomingQueueSession = incomingQueueConnection.createQueueSession(
  | false, Session.AUTO_ACKNOWLEDGE);

Now this works when both the client and the server are on localhost. It also works when using my two development machines at home (they are both connected to the same router at home). But, when I try to connect to my productive server (which is at a remote location and not at home :), I get the following error when I try to connect to the queue from my client (I get this error at the client machine):


  | javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
  | 	java.net.ConnectException: Connection refused: connect]
  | 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)
  | 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
  | 	at javax.naming.InitialContext.lookup(InitialContext.java:351)
  | 	at com.myProject.manager.ServerManagerJMSProducer.initialize(ServerManagerJMSProducer.java:124)
  | 	at com.myProject.manager.ServerManagerJMSProducer.getInstance(ServerManagerJMSProducer.java:168)
  | 	at com.myProject.manager.myProjectServerManager.run(myProjectServerManager.java:50)
  | 	at java.lang.Thread.run(Thread.java:595)
  | Caused by: java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
  | 	java.net.ConnectException: Connection refused: connect
  | 	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574)
  | 	at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
  | 	at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
  | 	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94)
  | 	at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
  | 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
  | 	... 6 more
  | Caused by: java.net.ConnectException: Connection refused: connect
  | 	at java.net.PlainSocketImpl.socketConnect(Native Method)
  | 	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
  | 	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
  | 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
  | 	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
  | 	at java.net.Socket.connect(Socket.java:519)
  | 	at java.net.Socket.connect(Socket.java:469)
  | 	at java.net.Socket.<init>(Socket.java:366)
  | 	at java.net.Socket.<init>(Socket.java:179)
  | 	at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
  | 	at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
  | 	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569)
  | 	... 11 more
  | java.lang.NullPointerException
  | 	at com.myProject.manager.ServerManagerJMSProducer.clearQueueMessages(ServerManagerJMSProducer.java:93)
  | 	at com.myProject.manager.myProjectServerManager.run(myProjectServerManager.java:63)
  | 	at java.lang.Thread.run(Thread.java:595)
  | Exception in thread "myProject Server Manager" java.lang.NullPointerException
  | 	at com.myProject.manager.ServerManagerJMSProducer.sendServerQuery(ServerManagerJMSProducer.java:82)
  | 	at com.myProject.manager.myProjectServerManager.run(myProjectServerManager.java:65)
  | 	at java.lang.Thread.run(Thread.java:595)

Any ideas?

Thanks in advance,
Onur

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4097631#4097631

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4097631



More information about the jboss-user mailing list