gisly
gisly

Reputation: 683

JMS connection to a remote MQ with bindings

I want to configure a Java application to work with a JMS IBM MQ queue using the bindings file. I am using the JMSDEMO application provided by IBM. It works with a local MQ manager but I cannot make it connect to a remote one. I've generated the bindings file on the remote machine and copied it to my machine.

I've changed the "localhost" in the bindings file to the remote machine name. However, the app still thinks it should connect to a local QM. (actually it ignores the hostname settings).

Here's the IBM demo code:

public static final String     cfLookup    = "JMSDEMOCF";
public static final String     JNDITopic   = "JMSDEMOTopic";
public static final String     JNDIQueue   = "JMSDEMOQueue";
public static final String     icf     ="com.sun.jndi.fscontext.RefFSContextFactory";

........

static              String     url         = "file:C:\\JMSDEMO\\JNDI";

..........

  Hashtable environment = new Hashtable();
  environment.put(Context.INITIAL_CONTEXT_FACTORY, icf);
  environment.put(Context.PROVIDER_URL, url);
  ctx = new InitialDirContext( environment );


  connFactory = (ConnectionFactory)ctx.lookup( cfLookup );


  connection = connFactory.createConnection();
  connection.start();

Here are some fragments of the bindings file (JMSDEMOCF is the name of the connection factory)

JMSDEMOCF/RefAddr/3/Content=<the remote machine name or IP; both ignored>
JMSDEMOCF/RefAddr/29/Content=<the remote machine name or IP; both ignored>(the remote port)

It also has the following line:

JMSDEMOCF/RefAddr/116/Type=XMSC_WMQ_LOCAL_ADDRESS

but deleting it changes nothing.

Upvotes: 0

Views: 3810

Answers (1)

Attila Repasi
Attila Repasi

Reputation: 1830

Create a new connection factory in your "bindings file" with MQ Explorer (why are you trying to edit the file by hand?), and specify the Transport option as MQ Client on this new connection factory (the default is Bindings, which is the local connection mode). On the Connection tab specify the address of the QM, and on the Channels tab the server connection channel to be used to connect to the QM.

Use the new connection factory in your application when connecting from a remote host. You may need to include some additional MQ JARs in the classpath.

Upvotes: 1

Related Questions