To configure the JBoss Enterprise Application
Server to communicate with WebSphere MQ where the WebSphere MQ was
supposed to be communicating with Mainframe system using cluster queue
of WebSphere. Initially I was blind, as I was not able to understand
how I could configure JBoss to communicate with MQ. But after some
research, I came to learn that it is possible to integrate JBoss with
WebSphere MQ and an application deployed in JBoss can directly put the
message in WebSphere MQ.
If you’re very familiar with JBoss and it’s
architecture, you can complete this task by creating new subsystem and
corresponding extension. Before you start configuring JBoss, you need to
install the adaptor of WebSphere MQ in JBoss. One can find the JBoss
adaptor from WebSphere MQ library, the file name is wmq.jmsra.rar.
Here are the steps for configuring an application to put the message in WebSphere MQ via JBoss Enterprise Application Server.
1) First we need to create
connection factory to bind the application where in the connection
factory will be binding with WebSphere MQ using Server Connection
Channel. This can be created from the management console.
Note: Make sure that server connection channel is configured in the WebSphere MQ level properly,
2) Bind the JBoss Queue destination to WebSphere MQ
Note: While mapping JBoss
Destination to WebSphere MQ make sure that you are mapping to proper
queue and that queue should have the correspondence permission.
Please have a reference of JBoss configuration below:
<subsystem>
<resource-adapters><resource-adapter id=”wmq.jmsra.rar”>
<archive>wmq.jmsra.rar</archive>
<transaction-support>NoTransaction</transaction-support>
<connection-definitions>
<connection-definition class-name=”com.ibm.mq.connector.outbound.ManagedQueueConnectionFactoryImpl” jndi-name=”java:jboss/DEMO” pool-name=”DEMO”>
<config-property name=”port”>1414</config-property>
<config-property name=”username”>sid</config-property>
<config-property name=”queueManager”>TestMQ</config-property>
<config-property name=”hostName”>127.0.0.1</config-property>
<config-property name=”channel”>JBOSS.CONNECT</config-property>
<config-property name=”password”>oracle@1234</config-property>
<config-property name=”transportType”>CLIENT</config-property>
</connection-definition>
</connection-definitions>
<resource-adapters><resource-adapter id=”wmq.jmsra.rar”>
<archive>wmq.jmsra.rar</archive>
<transaction-support>NoTransaction</transaction-support>
<connection-definitions>
<connection-definition class-name=”com.ibm.mq.connector.outbound.ManagedQueueConnectionFactoryImpl” jndi-name=”java:jboss/DEMO” pool-name=”DEMO”>
<config-property name=”port”>1414</config-property>
<config-property name=”username”>sid</config-property>
<config-property name=”queueManager”>TestMQ</config-property>
<config-property name=”hostName”>127.0.0.1</config-property>
<config-property name=”channel”>JBOSS.CONNECT</config-property>
<config-property name=”password”>oracle@1234</config-property>
<config-property name=”transportType”>CLIENT</config-property>
</connection-definition>
</connection-definitions>
<admin-objects>
<admin-object class-name=”com.ibm.mq.connector.outbound.MQQueueProxy” jndi-name=”java:jboss/Q_demo” pool-name=”Q_demo”>
<config-property name=”baseQueueName”>QUEUEA</config-property>
<config-property name=”baseQueueManagerName”>TestMQ</config-property>
</admin-object>
</admin-objects>
</subsystem>
<admin-object class-name=”com.ibm.mq.connector.outbound.MQQueueProxy” jndi-name=”java:jboss/Q_demo” pool-name=”Q_demo”>
<config-property name=”baseQueueName”>QUEUEA</config-property>
<config-property name=”baseQueueManagerName”>TestMQ</config-property>
</admin-object>
</admin-objects>
</subsystem>
Note: Please note that WebSphere MQ configurations are not mentioned here.
Now a simple application which has producer and
consumer can perform get/put operation in WebSphereMQ through JBoss.
This is entirely my own experience, which one I have mentioned here all
together.
Hi Siva,
ReplyDeleteNice blog!!
Please share your mail or phone contact for doubts.
Regards
Sai