B2B communication using IBM MQ
- by Dheeraj Kumar M
Oracle B2B 11g, provides the out-of-the box ability to connect to IBM MQ to exchange the message. This is support is provided via JMS offering of Oracle B2B.
This is an addition to the stack of existing communication capabilities of B2B with trading partners.
There are 2 ways of connecting to IBM MQ using B2B
1. Credential based connectivity
2. .bindings based connectivity
As a pre-requisite to connect to IBM MQ, it is required to provide the following libraries in classpath:
a. com.ibm.mqjms.jar
b. dhbcore.jar
c. com.ibm.mq.jar
d. com.ibm.mq.jmqi.jar
e. mqcontext.jar
f. com.ibm.mq.pcf.jar
g. com.ibm.mq.commonservices.jar
h. com.ibm.mq.headers.jar
i. fscontext.jar
j. jms.jar
Add the above jars into domain library directory and the directory usually located at $DOMAIN_DIR/lib.
The jars located in this($DOMAIN_DIR/lib) directory will be picked up and added dynamically to the end of the server classpath at server startup.
For eg. /user_projects/domains//lib/
Alternatively the above jar’s can also be added as part of the setDomainEnv.sh
Credential based connectivity :
Outbound: : Configure the trading partner delivery channel for using "Generic JMS" protocol
Inbound: : Configure the internal delivery channel for using "Generic JMS" protocol
with the following details:
Parameter NameDescription
Destination NameMQ Queue Name
Connection FactoryMQ Queue Manager Name
Destination Providerjava.naming.factory.initial=com.ibm.mq.jms.context.WMQInitialContextFactory;java.naming.provider.url=<host>:<QM Listen port>/<MQ Channel Name>;
User NameMQ User Name
passwordMQ password
.bindings based connectivity
As a pre-requisite, get/generate the .bindings file in MQServer. This can be done by MQ Administrator
Set the following values in the respective delivery channel for outbound / inbound
Parameter NameDescription
Destination NameMQ Queue Name
Connection FactoryMQ Queue Manager Name
Destination Providerjava.naming.factory.initial=com.ibm.mq.jms.context.WMQInitialContextFactory;java.naming.provider.url=file:///<location of .bindings file>;