This topic provides a reference for configuring SOAtest for popular JMS providers.
Sections include:
Table of Contents | ||
---|---|---|
|
...
Any time that a username and password are required to connect to a JMS system that is configured to require authentication for JNDI access, the following JNDI properties must be configured:
java.naming.security.principal=<USERNAME>
java.naming.security.credentials=<PASSWORD>
Amazon Simple Queue Service (SQS)
...
For | Amazon Simple Queue Service (SQS) and other JMS providers where building JMS ConnectionFactory through JNDI lookup is difficult. |
---|---|
Minimum required JARs | Amazon SQS java client JARs (available on Maven Central at https://repo1.maven.org/maven2/com/amazonaws/download from Maven Central here):
WSO2 carbon-jndi JAR (available on download from the WSO2 Maven repository at https://maven.wso2.org/nexus/content/repositories/releases/org/wso2/carbon/jndi/org.wso2.carbon.jndi/here): org.wso2.carbon.jndi-<version><VERSION>.jar |
Factory class |
InMemoryInitialContextFactory from the WSO2 carbon-jndi project. See Creating the JMS ConnectionFactory Object. |
Connecting to AWS | Use I AM user roles for connecting to AWS. Refer to the following Amazon documentation for details: |
Learn more | https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/getting-started.html |
Anchor | ||||
---|---|---|---|---|
|
The following Groovy script is provided to help you create a JMS ConnectionFactory object and bind it to an in-memory InitialContext (bindConnectionFactory
method). Run the script once per SOAtest or Virtualize startup. You can run the script using an Extension tool (for example, setup test in a SOAtest .tst or a Virtualize .pvn) for each .tst that requires the object or implement a more sophisticated process that automates script execution in a manner suitable to your environment.
The script supports two methods of authenticating with AWS. If your SOAtest/Virtualize server is deployed within an AWS environment, AWS recommends using the instance provider flow for authentication. Alternatively, you can authenticate with AWS using the static mode, which requires the region
, accessKey
, and secretKey
. See Script Variables for information about the authentication variables defined in the script.
...
A SQSConnectionFactory will be created and bound to the name SQSConnectionFactory
. Set the initial context to org.wso2.carbon.jndi.internal.InMemoryInitialContextFactory
and connection factory to SQSConnectionFactory
in any JNDI properties for looking up JMS ConnectionFactory.
...
You can create a Messaging Client and send/receive messages for one of the queues that were already defined. You will be able to also see all the expected JMS header properties, including message IDs.
Script Variables
The following table describes the variables used in the script:
...
| Access key credentials for CLI, SDK, and API access. |
---|---|
serialNumber | Number that uniquely identifies the device if multi-factor authentication (MFA) is enabled. For virtual MFA devices, the serial number is the Amazon resource name (ARN) of the device as shown on the AWS security credentials page. |
tokenCode | The value returned by your MFA device, such as Google Authenticator. |
durationSeconds | The value specifying how long the temporary MFA credentials will be valid. |
Apache ActiveMQ
Scroll Table Layout | ||
---|---|---|
|
Changing the Consumer Polling Interval
The message consumer for the SQS JMS client uses a default long polling interval of 20 seconds. This means that it can take up to 20 seconds to receive a message from a queue, even if the message shows up before then. The polling interval can be changed with a script. Example (Groovy):
Code Block | ||
---|---|---|
| ||
import com.amazon.sqs.javamessaging.SQSMessageConsumerPrefetch
void setMessageConsumerWaitTime() {
SQSMessageConsumerPrefetch.WAIT_TIME_SECONDS = 1
} |
Apache ActiveMQ
Scroll Table Layout | ||
---|---|---|
|
For | For | For Apache Active MQ |
---|---|---|
Minimum required jars | Found under the ActiveMQ installation directory- activemq-all-[version]<VERSION>.jar (download from Maven Central here) | |
Typical provider URL pattern | tcp://hostname:61616 | |
Factory class | JNDI Initial Context factory class Default connection factory JNDI name | |
Learn more | http://activemq.apache.org/jndi-support.html |
Apache
...
ActiveMQ Artemis
Scroll Table Layout | ||
---|---|---|
|
For |
---|
Apache |
ActiveMQ Artemis |
Minimum required |
---|
jars |
---|
artemis- |
jms-client- |
all-<VERSION>.jar (download from Maven Central here)
|
The jars vary depending on the version of Qpid. The jar for Qpid 0.8 includes the following:
- backport-util-concurrent-2.2.jar
- geronimo-jms_1.1_spec-1.0.jar
- mina-core-1.0.1.jar
- mina-filter-ssl-1.0.1.jar
- qpid-all.jar
- qpid-client-0.8.jar
- qpid-common-0.8.jar
- slf4j-api-1.6.1.jar
For example:
connectionfactory.local = amqp://user:password@clientid/testpath?brokerlist='tcp://localhost:5672'
JNDI Initial Context factory class
- org.apache.qpid.jndi.PropertiesFileInitialContextFactory
https://cwiki.apache.org/qpid/how-to-use-jndi.html
...
Typical provider URL pattern | tcp://hostname:61616
|
---|---|
Factory class | JNDI Initial Context factory class Default connection factory JNDI name |
Learn more | https://activemq.apache.org/components/artemis/documentation/latest/using-jms.html |
Apache Qpid
Scroll Table Layout | ||
---|---|---|
|
For |
---|
Apache Qpid |
Minimum required JARs |
---|
GlassFish 3 - Found under [GlassFish install directory]/glassfish/lib: - gf-client.jar
Note that the gf-client.jar references a few dozen other jars from the GlassFish 3 installation. You must reference gf-client.jar from the GlassFish installation directory so that the referenced jars can be found and loaded. GlassFish can be downloaded from http://glassfish.java.net/.
GlassFish 2 - Found under [GlassFish install directory]/lib:
- appserv-admin.jar
- appserv-deployment-client.jar
- appserv-ext.jar
- appserv-rt.jar
- javaee.jar
- install/applications/jmsra/imqjmsra.jar
JNDI Initial Context factory class
- com.sun.enterprise.naming.SerialInitContextFactory
Note that GlassFish has another JNDI Initial Context factory class called "com.sun.appserv.naming.S1ASCtxFactory". This class has poor performance and should not be used. Use the mentioned SerialInitContextFactory class instead which is available in both GlassFish 2 and GlassFish 3.
/etc/hosts
on Unix or %SystemRoot%\system32\drivers\etc\hosts
on Windows.IBM WebSphere Application Server (WAS)
JMS 2.0 compatible jars from Qpid 1.11.0 (download from Apache here)
| |
Typical provider URL pattern | The path to a JNDI properties file. The file can be empty. If you specify a non-empty file then those properties will be merged with any other JNDI properties defined on the Properties tab. Alternatively, you can use Examples:
|
---|---|
Connection URL JNDI property | Register a ConnectionFactory in JNDI using the form Example:
Detail: https://qpid.apache.org/releases/qpid-jms-1.11.0/docs/index.html#connection-uri |
Factory class | JNDI Initial Context factory class |
Connection Factory | Use the JNDI name specified earlier in the Example:
|
Learn more |
Azure Service Bus Standard Tier
Scroll Table Layout | ||
---|---|---|
|
For |
---|
Found under [WAS installation dir]/runtimes
- com.ibm.ws.ejb.thinclient_7.0.0.jar
- com.ibm.ws.orb_7.0.0.jar
- com.ibm.ws.sib.client.thin.jms_7.0.0.jar
JNDI Initial Context factory class
- com.ibm.websphere.naming.WsnInitialContextFactory
Info |
---|
What if you don’t have WAS 7.0 or later? If you aren’t using (or don’t have access to) a WAS 7 installation, download and install the IBM Client for JMS, which also works with WAS 6.0.2 and later:
|
...
Azure Service Bus Standard Tier | |
Minimum required JARs | JMS 2.0 compatible jars from Qpid 1.11.0 (download from Apache here)
|
---|---|
Typical provider URL pattern | The path to a JNDI properties file. The file can be empty. If you specify a non-empty file then those properties will be merged with any other JNDI properties defined on the Properties tab. Alternatively, you can use Examples:
|
Connection URL JNDI property | Register a ConnectionFactory in JNDI using the form Example:
|
Factory class |
|
Connection Factory | Use the JNDI name specified earlier in the Example:
|
Licensing Restrictions | Only queues are accessible using the Detail: |
Learn more | https://learn.microsoft.com/azure/service-bus-messaging/service-bus-java-how-to-use-jms-api-amqp |
Azure Service Bus Premium Tier
Scroll Table Layout | ||
---|---|---|
|
For | Azure Service Bus Premium Tier |
---|---|
Minimum required JARs | azure-servicebus-jms-<VERSION>.jar (download from Maven Central here) JMS 2.0 compatible jars from Qpid 1.11.0 (download from Apache here)
org.wso2.carbon.jndi-<VERSION>.jar (download from the WSO2 Maven repository here) |
Factory class |
|
Connection Factory |
|
Licensing Restrictions | The |
Learn more | https://github.com/Azure/azure-servicebus-jms |
Anchor | ||||
---|---|---|---|---|
|
You first need the "connection string" for your Azure Service Bus namespace:Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<SAS_POLICY_NAME>;SharedAccessKey=<SAS_POLICY_KEY>
The following Groovy script is provided to help you create a JMS ConnectionFactory
object and bind it to an in-memory InitialContext
(bindConnectionFactory
method). Run the script once per SOAtest or Virtualize startup. You can run the script using an Extension tool (for example, setup test in a SOAtest .tst or a Virtualize .pvn) for each .tst that requires the object or implement a more sophisticated process that automates script execution in a manner suitable to your environment.
Code Block | ||
---|---|---|
| ||
import com.microsoft.azure.servicebus.jms.ConnectionStringBuilder
import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory
import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactorySettings;
import java.util.Properties
import javax.naming.Context
import javax.naming.InitialContext
void bindConnectionFactory() {
Properties env = new Properties()
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.wso2.carbon.jndi.internal.InMemoryInitialContextFactory")
Context ctx = new InitialContext(env)
ConnectionStringBuilder connectionStringBuilder = new ConnectionStringBuilder("Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<SAS_POLICY_NAME>;SharedAccessKey=<SAS_POLICY_KEY>")
ServiceBusJmsConnectionFactorySettings connectionFactorySettings = new ServiceBusJmsConnectionFactorySettings();
connectionFactorySettings.setShouldReconnect(false);
ServiceBusJmsConnectionFactory sbConnectionFactory = new ServiceBusJmsConnectionFactory(connectionStringBuilder, connectionFactorySettings)
ctx.rebind("ServiceBusJmsConnectionFactory", sbConnectionFactory)
} |
Anchor | ||||
---|---|---|---|---|
|
Scroll Table Layout | ||
---|---|---|
|
For | GlassFish |
---|---|
Minimum required JARs | GlassFish 3 - Found under - gf-client.jar Note that the gf-client.jar references a few dozen other jars from the GlassFish 3 installation. You must reference gf-client.jar from the GlassFish installation directory so that the referenced jars can be found and loaded. GlassFish can be downloaded from http://glassfish.java.net/. GlassFish 2 - Found under - appserv-admin.jar |
Typical provider URL pattern | iiop://hostname:3700 |
Factory class | JNDI Initial Context factory class Note that GlassFish has another JNDI Initial Context factory class called "com.sun.appserv.naming.S1ASCtxFactory". This class has poor performance and should not be used. Use the mentioned SerialInitContextFactory class instead which is available in both GlassFish 2 and GlassFish 3. |
Notes | The GlassFish client and GlassFish server perform a reverse DNS lookup on each other. If the server does not recognize the client's host name, then you can add the client's host name and IP address to the hosts file on the server. If the client does not recognize the server's host name, then you can add the server's host name and IP address to the hosts file on the client. The hosts file is typically /etc/hosts on Unix or %SystemRoot%\system32\drivers\etc\hosts on Windows. |
Learn more | http://glassfish.java.net/ |
IBM WebSphere Application Server (WAS)
Scroll Table Layout | ||
---|---|---|
|
For | WAS Default JMS provider. Parasoft recommends the use of IBM's JMS thin client that is provided by WAS 7.0 or later, and which can interoperate with WAS 6.0.2 and later. |
---|---|
Minimum required JARs | Found under |
Typical provider URL pattern | iiop://hostname:2809/ |
Factory class | JNDI Initial Context factory class |
Learn more | WebSphere Application Server Network Deployment, Version 7.0 documentation |
Info |
---|
What if you don’t have WAS 7.0 or later? If you aren’t using (or don’t have access to) a WAS 7 installation, download and install the IBM Client for JMS, which also works with WAS 6.0.2 and later:
|
Anchor | ||||
---|---|---|---|---|
|
Scroll Table Layout | ||
---|---|---|
|
For | IBM MQ JMS provider |
---|---|
Minimum required JARs |
|
Typical provider URL pattern | The directory path containing the .bindings file. Example:
|
Scroll Table Layout | ||
---|---|---|
|
For | For the IBM MQ JMS provider | ||
---|---|---|---|
Minimum required JARs | For IBM MQ 9You can find these under
For IBM MQ 8You can find these under
For IBM MQ 7.0You can find these under
You also need to download the following jar:
For IBM MQ 6.0You can find these under
You also need to download the following jars:
IBM MQ Client DownloadThe jars from | ||
Typical provider URL pattern | yourhostname:1414/SYSTEM.DEF.SVRCONN | ||
Factory class | IBM MQ JNDI Initial Context factory class
| ||
Connection Factory | ConnectionFactory name as defined in the .bindings file | SSL configuration | IBM JMS clients can achieve SSL connections by setting the appropriate properties in the initial context. Both IBM MQ and IBM JMS clients will set the same properties for SSL connectivity . |
JMS messaging without JNDI | Under the properties tab, define the following properties:
| ||
Additional information | IBM's JNDI provider authenticates itself with the IBM MQ server by sending the user's login name. This is typically the username that was provided when logging into the workstation before starting SOAtest/Virtualize. If the MQ server does not recognize the username, then your tool will fail with the error "javax.jms.JMSSecurityException: MQJMS2013: invalid security authentication supplied for MQQueueManager". This error can be resolved by adding a Windows user account on the IBM MQ server machine. This account should 1) have the same username as the account on the local machine where SOAtest is running and 2) be a member of the "mqm" IBM MQ Administration Group.Alternatively, use a different username by changing the value of the user.name Java System property. This system property can be configured by starting SOAtest using It is also possible to modify Java system properties during test suite execution by using an Extension Tool to call the java.lang.System.setProperty() method from Sun's Java API. For more details on this error, see http://www.mqseries.net/phpBB/view-topic.php?t=40640. | ||
Learn more | http-01software/integration/wmq/library/ http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm10320_.htmdocs/ibm-mq/ |
JBoss JMS
Scroll Table Layout | ||
---|---|---|
|
For | For JBoss JMS; the following jar list is based on JBoss 5.0 |
---|---|
Minimum required JARs | Found under [JBoss install dir] |
Typical provider URL pattern | yourhostnamehostname |
Factory class | JNDI Initial Context factory class |
Open Message Queue (OpenMQ)
...
Scroll Table Layout | ||
---|---|---|
|
For | For OpenMQ Server |
---|---|
Minimum required JARs | Found under [OpenMQ install dir] |
Typical provider URL pattern | yourhostnamehostname |
Factory class | JNDI Initial Context factory class |
Learn more | http://mq.java.net |
Oracle Advanced Queuing Queuing (AQ)
Scroll Table Layout | ||
---|---|---|
|
For | For Oracle Advanced Queuing (AQ) |
---|---|
Minimum required JARs | From Oracle Database installation: or From Oracle Weblogic Server installation: |
Provider URL | Leave this field empty. |
JNDI initial context factory class | oracle.jms.AQjmsInitialContextFactory |
Connection factory JNDI name | One of the following: |
Required JNDI properties |
|
Queue/topic names | Prefix a queue name with |
Additional information | The aqapi.jar from older version of Oracle Database, such as 10g, may be missing the Initial Context factory class. Use the jars from Oracle Database 11g or later. The latest Oracle Database Express Edition (XE) can be downloaded from oracle.com: Oracle Database Express Edition 11g Release 2 |
Learn more | Interoperating with Oracle AQ JMS |
...
Scroll Table Layout | ||
---|---|---|
|
For | For Oracle BEA WebLogic |
---|---|
Minimum required JARs (thin client) * | Found under Note that additional jars may be needed. We recommend using a full client; this relieves you from having to find and add many jars. |
Minimum required JARs (full client) * | Build the single wlfullclient5.jar as described in the instructions for "Creating a wlfullclient5.jar for JDK 1.5 client applications." |
Typical provider URL pattern | Thin Client: Full Client: |
Factory class | JNDI Initial Context factory class: |
Learn more | http://docs.oracle.com/cd/E12840_01/wls/docs103/client/jarbuilder.html |
...
Scroll Table Layout | ||
---|---|---|
|
For | For Progress Sonic MQ/ESB |
---|---|
Minimum required JARs | Found under Note that SonicMQ's broker.jar and TIBCO’s tibcojms.jar cannot be used together. |
Typical provider URL Ppttern | tcp://yourhostnamehostname:2506 |
Factory class | JNDI Initial Context factory class |
Learn more | Refer to SonicMQ Application Programming Guide, Appendix A (Using the Sonic JNDI SPI) and which also refers to other relevant sections. |
...
Scroll Table Layout | ||
---|---|---|
|
For | For RabbitMQ |
---|---|
Minimum required JARs | Download client library from Maven's Central Repository. rabbitmq-jms-<version><VERSION>.jar |
.bindings file example | #This file is used by the JNDI FSContext. #Wed Jan 31 15:36:15 PST 2018 ConnectionFactory/FactoryName=com.rabbitmq.jms.admin.RMQObjectFactory ConnectionFactory/ClassName=javax.jms.ConnectionFactory ConnectionFactory/RefAddr/0/Type=name ConnectionFactory/RefAddr/0/Encoding=String ConnectionFactory/RefAddr/0/Content=jms/ConnectionFactory ConnectionFactory/RefAddr/1/Type=type ConnectionFactory/RefAddr/1/Encoding=String ConnectionFactory/RefAddr/1/Content=javax.jms.ConnectionFactory ConnectionFactory/RefAddr/2/Type=factory ConnectionFactory/RefAddr/2/Encoding=String ConnectionFactory/RefAddr/2/Content=com.rabbitmq.jms.admin.RMQObjectFactory ConnectionFactory/RefAddr/3/Type=host ConnectionFactory/RefAddr/3/Encoding=String ConnectionFactory/RefAddr/3/Content=host.company.com ConnectionFactory/RefAddr/4/Type=port ConnectionFactory/RefAddr/4/Encoding=String ConnectionFactory/RefAddr/4/Content=5672 |
Typical provider URL pattern | The directory path containing the .bindings file
|
Initial context | com.sun.jndi.fscontext.RefFSContextFactory |
Connection factory | JNDI Initial Context factory class |
Solace JMS
Scroll Table Layout | ||
---|---|---|
|
For | For Solace JMS |
---|---|
Minimum required JARs | commons-lang-<version><VERSION>.jar sol-common-<version><VERSION>.jar sol-jcsmp-<version><VERSION>.jar sol-jms-<version><VERSION>.jar |
Typical provider URL pattern | smf://<host><HOST>:<port><PORT> |
Factory class | JNDI Initial Context factory class The additional JNDI property |
...
Scroll Table Layout | ||
---|---|---|
|
For | For Sun MQ Server |
---|---|
Minimum required JARs | Found under |
Typical provider URL pattern | yourhostnamehostname |
Factory class | JNDI Initial Context factory class |
Learn more | See the Sun Java System Message Queue Administration 3.x/4.x Guide, Section Quick-Start Tutorial. This document can be downloaded from http://docs.sun.com/app/docs/prod/message?l=en#hic. In the document, navigate to Software > Application & Integration Services > Message Queue. |
...
Scroll Table Layout | ||
---|---|---|
|
For | For TIBCO EMS |
---|---|
Minimum required JARs | Found under Note that SonicMQ's broker.jar and TIBCO’s tibcojms.jar cannot be used together. |
Typical provider URL pattern | tcp://yourhostnamehostname:7222 yourhostname hostname (if using default port numbers) |
Factory class | JNDI Initial Context factory class |
SSL configuration | The following JNDI properties must be configured: For two-way SSL, the following additional properties must also be configured: |
Additional information | Any time that a username and password is needed to connect to Tibco EMS the following JNDI properties must be configured: |
Learn more | Refer to the TIBCO Enterprise Message Service User's Guide, section 9: Developing an EMS Client Application> Application > Programmer Checklist |
Anchor | ||||
---|---|---|---|---|
|
SOAtest and Virtualize bundle a Sun JNDI implementation that stores JNDI bindings in directories and files on the local hard drive using com.sun.jndi.fscontext.RefFSContextFactory
as the Initial Context and a user defined Provider URL (directory) of “of C:\JNDIRoot
” or or something similar.
When using the Sun implementation, you must populate the “the C:\JNDIRoot
” directory directory with a .binding file so that fscontext
can successfully look up the ConnectionFactory and Queue or Topic objects. Parasoft has put together an example that can be found in the SOAtest/Virtualize installation directory (/examples/jms/JndiFileProviderTest.java), which creates a .binding file.
...