
Settings for the JMS Provider
In JMS, provider-specific information is contained in administrated objects.
QueueConnectionFactory and Queue are the objects relevant for the JMS adapter. Administrated objects such as these are either generated directly or loaded dynamically (for example, using JNDI from LDAP servers).Provider-specific data can be specified with the configuration of the JMS adapter, because on the one hand, a JNDI service provider is not necessarily available, and on the other, because no provider-specific characteristics should exist in the adapter (JMS interfaces are provider-independent, however, administrated objects are extremely provider-dependent). This makes the overall configuration easier and more flexible.
Below is a brief example of the general administration of QueueConnectionFactory and Queue using the example of SonicMQ and MQSeries.
You select the JMS provider by specifying the implementing class of QueueConnectionFactory, for example:

JMS.QueueConnectionFactoryImpl.classname=progress.message.jclient.QueueConnectionFactory
(for SonicMQ)JMS.QueueConnectionFactoryImpl.classname=com.ibm.mq.jms.MQQueueConnectionFactory
(for MQSeries)The provider determines which messaging parameter is set, and how. For example, the provider address is set in the constructor of the QueueConnectionFactory for SonicMQ, while this is performed using a SetMethod for MQSeries:

JMS.QueueConnectionFactoryImpl.constructor=java.lang.String
p49512:2506 (for SonicMQ)JMS.QueueConnectionFactoryImpl.method.setHostName=java.lang.String
p49512:2506 (for MQSeries)In addition, you need to set a number of provider-dependent parameters or flags. For example, for MQSeries the information whether the provider should be contacted using JNI or TCP/IC (the former is the default setting, but is only possible on local machines). You set the connection type TCPIP using a constant, for example:

JMS.QueueConnectionFactoryImpl.method.setTransportType=java.lang.Integer
{com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP}For Queues the same applies as for QueueConnectionFactories. For example, if you want to send a JMS message using MQSeries, but the receiver only supports native MQSeries messages, then the following configuration entry is recommended:

JMS.QueueImpl.method.setTargetClient=java.lang.Integer
{com.ibm.mq.jms.JMSC.MQJMS_CLIENT_NONJMS_MQ}See the documentation of your JMS provider for more information about mandatory/optional settings.