The System Queue is configured using the following driver-specific Java properties specified in the TDI global.properties or solution.properties file:
Depending on the com.ibm.di.systemqueue.driver.IBMMQe parameter, one of the following sections is applicable:
IBM WebSphere MQ Everyplace is deprecated in this release of TDI, and will be removed in a future version. A suitable replacement will be bundled at that time.
In order to be able to use MQe as the JMS provider for the System Queue an MQe Queue Manager needs to be created. This can be done using the MQe Configuration Utility bundled with TDI
The system queue is turned on by default, except on z/OS. If you want to use MQe as a system queue you then an abridged enabling procedure is as follows:
cd solution_dir (if using the installation directory, use cd TDI_install_dir)
TDI_install_dir/jars/plugins/mqeconfig.sh
TDI_install_dir/jars/plugins/mqeconfig.props create server (one line)
These are WebSphere MQ-specific parameters; for more information about these parameters, see the MQ JMS diver initialization properties in the System Queue Configuration Example section.
In order to use Microbroker (MB) as the JMS provider for the System Queue, the systemqueue.jmsdriver.name property in global.properties or solution.properties must be set to com.ibm.di.systemqueue.driver.IBMMB.
The Microbroker driver has the following parameters (listed here without the "systemqueue.jmsdriver.param." prefix):
In order to be able to use Microbroker as the JMS provider for the System Queue, some Microbroker jars are needed. A sample list of the required jars is available in section External System Configuration, Microbroker of the JMS Connector in IBM TDI V7.1 Reference Guide.
The JMS Driver allows us to provide connectivity to any JMS provider through scripting in JavaScript, without writing and building Java code. The JMS Driver acts as a bridge between the System Queue and a user-specified piece of JavaScript, residing on the local file system, which is responsible for creating a javax.jms.QueueConnectionFactory object or a javax.jms.TopicConnectionFactory object. These objects are obtained in a provider-specific way.
systemqueue.jmsdriver.param.user.my.prop1=myvalue1the configured JMS Driver get a property with a name of user.my.prop1 and a value of myvalue1.
The piece of JavaScript executed by the JMS Driver needs access to a JavaScript object named env. This is an object of type java.util.Hashtable, which contains provider-specific parameters for connecting to the JMS provider. These parameters are intended to be used by the JavaScript code in order to access the specific JMS system server instance.
These parameters can be specified in global.properties or solution.properties using the systemqueue.jmsdriver.param prefix. For example, if a URL param is needed for some JMS system, then the following property can be set in global.properties or solution.properties:
systemqueue.jmsdriver.param.myjmssystem.url=myjmsserver.mydomain.com:12345
This definition would cause the System Queue to pass it to the JavaScript code as an entry in the env Hashtable, whose key would be "myjmssystem.url" (the System Queue removes the prefix) and whose value would be "myjmsserver.mydomain.com:12345".
The piece of JavaScript executed by the JMS Driver has access to
a JavaScript object named ret. This is an
object of type com.ibm.di.systemqueue.driver.JMSScriptDriver.Ret.
It is an instance of the Ret inner class of the JMS Script
driver class. This ret object is to be used to return to
the JMS Script driver and eventually to the System Queue the provider-specific
objects which the JavaScript code obtains from the JMS system. The ret object
can also be used to return any error information to the JMS Driver
and the System Queue.
This ret object has the following members which can be set from
JavaScript:
An example configuration and JavaScript code to use the third-party
Fiorano MQ system is provided in the TDI_install_dir/examples folder, and reproduced
below:
This piece of JavaScript demonstrates how the parameters
can be hard-coded in the JavaScript code. An alternative is to use
the env JavaScript object to get any user-supplied parameters
from global.properties or solution.properties. Using the env object
for parameter retrieval would make changing the configuration easier, because only properties in global.properties or solution.properties would have to be changed, and no JavaScript code editing would be necessary. This means that
users without JavaScript skills would be able to change the configuration.
Of the standard JMS Drivers, only the driver for MQ supports SSL.
The MQe JMS Driver works only with a local Queue Manager -
this is mandated by the MQe architecture. The JMS Script Driver is
a generic driver which supports whatever the corresponding user-provided
JavaScript supports.
Some JMS systems, such as WebSphere MQ, can use or even require
the use of user name and password authentication. The System Queue
provides two standard properties in global.properties or solution.properties which can be used to
configure and supply a user name and password to the System Queue.
These properties are systemqueue.auth.username and systemqueue.auth.password.
These two properties are protected by the standard TDI server encrypting
of properties which are marked as {protect}-. In this way
after these properties are set and the TDI server is started the properties'
values get encrypted. For more information about these two properties, see the System Queue Configuration section.
JavaScript example for Fiorano MQ
var ctx = new Packages.java.util.Hashtable();
ctx.put("jms.username", "anonymous");
ctx.put("jms.password", "anonymous");
ctx.put("jms.broker", "http://192.168.113.220:1856");
ctx.put("jms.qManager", "fiorano.jms.runtime.naming.FioranoInitialContextFactory");
var ic = new javax.naming.InitialContext(ctx);
var queueFactory = ic.lookup("primaryQCF");
var topicFactory = ic.lookup("primaryTCF");
ret.queueConnectionFactory = queueFactory;
main.logmsg("driverFiorano.js : QueueConnectionFactory : " + queueFactory);
ret.topicConnectionFactory = topicFactory;
main.logmsg("driverFiorano.js : TopicConnectionFactory : " + topicFactory);
System Queue Configuration Example
##----------------------
## System Queue settings
##----------------------
## If set to "true" the System Queue is initialized on startup and can be used;
## otherwise the System Queue is not initialized and cannot be used.
systemqueue.on=true
## Specifies the fully qualified name of the class that is used as a JMS Driver.
# systemqueue.jmsdriver.name=com.ibm.di.systemqueue.driver.JMSScriptDriver
# systemqueue.jmsdriver.name=com.ibm.di.systemqueue.driver.IBMMQe
systemqueue.jmsdriver.name=com.ibm.di.systemqueue.driver.IBMMQ
### MQe JMS driver initialization properties
## Specifies the location of the MQe initialization file.
## This file is used to initialize MQe on TDI server startup.
# systemqueue.jmsdriver.param.mqe.file.ini=MQePWStore/pwstore_server.ini
### MQ JMS driver initialization properties
systemqueue.jmsdriver.param.jms.broker=192.168.113.54:1414
systemqueue.jmsdriver.param.jms.serverChannel=S_s04win
systemqueue.jmsdriver.param.jms.qManager=QM_s04win
systemqueue.jmsdriver.param.jms.sslCipher=SSL_RSA_WITH_RC4128_MD5
systemqueue.jmsdriver.param.jms.sslUseFlag=true
### JMS Javascript driver initialization properties
## Specifies the location of the script file
# systemqueue.jmsdriver.param.js.jsfile=driver.js
## This is the place to put any JMS provider specific properties needed by a JMS Driver, ## which connects to a 3rd party JMS system.
## All JMS Driver properties should begin with the 'systemqueue.jmsdriver.param.' prefix.
## All properties having this prefix are passes to the JMS Driver on initialization after
## removing the 'systemqueue.jmsdriver.param.' prefix from the property name.
# systemqueue.jmsdriver.param.user.param1=value1
# systemqueue.jmsdriver.param.user.param2=value2
# ...
## Credentials used for authenticating to the target JMS system
# {protect}-systemqueue.auth.username=<username>
# {protect}-systemqueue.auth.password=<password>
Security and Authentication
Encryption
Authentication