blob: bbf5e49bd4624b50d635b56e6743fc0937589a27 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<head>
<meta charset="utf-8"/>
<title>JMSConnectionFactoryProvider</title>
<link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
</head>
<body>
<h2>Description</h2>
<p>
This controller service serves as a general factory service to serving vendor specific
instances of the <i>javax.jms.ConnectionFactory</i>. It does so by allowing user to
configure vendor specific properties as well as point to the location of the vendor
provided JMS client libraries so the correct implementation of the <i>javax.jms.ConnectionFactory</i>
can be found, loaded, instantiated and served to the dependent processors (see PublishJMS, ConsumeJMS).
</p>
<p>
All JMS vendors and <i>ConnectionFactory</i> implementations are supported as long as the configuration values can
be set through <i>set</i> methods (detailed explanation in the last paragraph). However some helpful accommodation
are done for the following JMS vendors:
</p>
<ul>
<li>Apache ActiveMQ</li>
<li>IBM MQ</li>
<li>TIBCO EMS</li>
<li>Qpid JMS (AMQP 1.0)</li>
</ul>
<p>
This controller service exposes only a single mandatory static configuration property that are required across all
implementations. The rest of the configuration properties are either optional or vendor specific.
</p>
<p>
The mandatory configuration property is:
</p>
<ul>
<li><b>JMS Connection Factory Implementation</b> - The fully qualified name of the JMS <i>ConnectionFactory</i>
implementation class. For example:
<ul>
<li>Apache ActiveMQ - <a href="http://activemq.apache.org/maven/5.15.9/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html" target="_blank">org.apache.activemq.ActiveMQConnectionFactory</a></li>
<li>IBM MQ - <a href="https://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.javadoc.doc/WMQJMSClasses/com/ibm/mq/jms/MQQueueConnectionFactory.html" target="_blank">com.ibm.mq.jms.MQQueueConnectionFactory</a></li>
<li>TIBCO EMS - <a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsQueueConnectionFactory.html" target="_blank">com.tibco.tibjms.TibjmsQueueConnectionFactory</a></li>
<li>Qpid JMS (AMQP 1.0) - <a href="https://github.com/apache/qpid-jms/blob/1.1.0/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java" target="_blank">org.apache.qpid.jms.JmsConnectionFactory</a></li>
</ul>
</li>
</ul>
<p>
The following static configuration properties are optional but required in many cases:
</p>
<ul>
<li><b>JMS Client Libraries</b> - Path to the directory with additional resources (eg. JARs,
configuration files, etc.) to be added to the classpath (defined as a comma separated list of values). Such resources typically represent target JMS client
libraries for the <i>ConnectionFactory</i> implementation.
</li>
<li><b>JMS Broker URI</b> - URI pointing to the network location of the JMS Message broker. For example:
<ul>
<li>Apache ActiveMQ - <i>tcp://myhost:1234</i> for single broker and
<i>failover:(tcp://myhost01:1234,tcp://myhost02:1234)</i> for multiple brokers.
</li>
<li>IBM MQ - <i>myhost(1234)</i> for single broker. <i>myhost01(1234),myhost02(1234)</i> for multiple
brokers.
</li>
<li>TIBCO EMS - <i>tcp://myhost:1234</i> for single broker and
<i>tcp://myhost01:7222,tcp://myhost02:7222</i> for multiple brokers.
</li>
<li>Qpid JMS (AMQP 1.0) - <i>amqp[s]://myhost:1234</i> for single broker and
<i>failover:(amqp[s]://myhost01:1234,amqp[s]://myhost02:1234)</i> for multiple brokers.
</li>
</ul>
</li>
</ul>
<p>
The rest of the vendor specific configuration are set through dynamic properties utilizing the
<a href="http://docstore.mik.ua/orelly/java-ent/jnut/ch06_02.htm" target="_blank">Java Beans</a> convention where a property
name is derived from the <i>set</i> method of the vendor specific <i>ConnectionFactory</i>'s implementation. For
example, <i>com.ibm.mq.jms.MQConnectionFactory.setChannel(String)</i> would imply 'channel' property and
<i>com.ibm.mq.jms.MQConnectionFactory.setTransportType(int)</i> would imply 'transportType' property. For the list
of available properties please consult vendor provided documentation. Following is examples of such vendor provided
documentation:
</p>
<ul>
<li><a href="http://activemq.apache.org/maven/5.15.9/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html" target="_blank">Apache
ActiveMQ</a></li>
<li>
<a href="https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.javadoc.doc/WMQJMSClasses/com/ibm/mq/jms/MQConnectionFactory.html" target="_blank">IBM
MQ</a></li>
<li>
<a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsConnectionFactory.html" target="_blank">TIBCO
EMS</a></li>
<li>
<a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsConnectionFactory.html" target="_blank">Qpid
JMS (AMQP 1.0)</a> </li>
</ul>
<p>
Besides the dynamic properties and <i>set</i> methods described in the previous section, some providers also support additional
configuration via the Broker URI (as query parameters added to the URI):
</p>
<ul>
<li>
<a href="https://qpid.apache.org/releases/qpid-jms-1.1.0/docs/index.html#connection-uri" target="_blank">Qpid
JMS (AMQP 1.0)</a> </li>
</ul>
<h2>Sample controller service configuration for IBM MQ</h2>
<table>
<tr>
<th>Property</th>
<th>Value</th>
<th>Static/Dynamic</th>
<th>Comments</th>
</tr>
<tr>
<td>JMS Connection Factory Implementation</td>
<td>com.ibm.mq.jms.MQQueueConnectionFactory</td>
<td>Static</td>
<td>Vendor provided implementation of QueueConnectionFactory</td>
</tr>
<tr>
<td>JMS Client Libraries</td>
<td>/opt/mqm/java/lib</td>
<td>Static</td>
<td>Default installation path of client JAR files on Linux systems</td>
</tr>
<tr>
<td>JMS Broker URI</td>
<td>mqhost01(1414),mqhost02(1414)</td>
<td>Static</td>
<td><a href="https://www.ibm.com/support/knowledgecenter/ro/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/ucli_pqcfm.html#MQTopicConnectionFactory_enterporthostname" target="_blank">Connection Name List syntax</a>.
Colon separated host/port pair(s) is also supported</td>
</tr>
<tr>
<td>JMS SSL Context Service</td>
<td></td>
<td>Static</td>
<td>Only required if using SSL/TLS</td>
</tr>
<tr>
<td>channel</td>
<td>TO.BAR</td>
<td>Dynamic</td>
<td>Required when using the client transport mode</td>
</tr>
<tr>
<td>queueManager</td>
<td>PQM1</td>
<td>Dynamic</td>
<td>Name of queue manager. Always required.</td>
</tr>
<tr>
<td>transportType</td>
<td>1</td>
<td>Dynamic</td>
<td>Constant integer value corresponding to the client transport mode. Default value is <a href="https://www.ibm.com/support/knowledgecenter/en/SSEQTP_9.0.0/com.ibm.websphere.base.doc/ae/umj_pjcfm.html" target="_blank">"Bindings, then client"</a></td>
</tr>
</table>
</body>
</html>