Working With the JMS Connectors
This section provides an overview of the JMS connectors and discusses how to:
Specify JNDIFactory class names.
Use the JMS listening connector.
Use the JMS target connector.
The JMS listening and target connectors enable communication between JMS provider systems and an integration gateway using standard JMS protocols. PeopleSoft currently supports Java Native Directory Interface (JNDI) only for File System Context [fscontext] and RMI lookup.
Note: Check My Oracle Support for the JMS specification currently supported by PeopleTools. PeopleSoft Integration Broker's JMS listening connector and JMS listening connector are compliant with the specification version listed.
Supported JMS Providers
To use the JMS connectors, you must add specific Java archive (JAR) files to the Java CLASSPATH. The JAR files that you add to the CLASSPATH depend on the JMS provider with which you're communicating. The following JMS providers are supported:
JMS Provider |
Required Files |
---|---|
Oracle WebLogic |
N/A |
IBM MQ Series |
jms.jar, jndi.jar, fscontext.jar, com.ibm.mqjms.jar |
Note: Not only can a gateway running on a Oracle WebLogic web server communicate with a WebLogic JMS provider, but both services can run on a single installation of WebLogic. However, the gateway still treats the JMS provider as a separate system, and it must be configured the same way as in any other scenario.
You can also add generic JMS providers for use with PeopleSoft Integration Broker.
Integrations with Oracle SOA B2B Suite
The JMS target connector and JMS listening connector feature properties that enable you to integrate with Oracle SOA B2B Suite.
The Oracle SOA-B2B server supports several industry-standard e-commerce protocols as well as several transports for message delivery.
PeopleSoft's integration to the Oracle SOA B2B Suite uses the JMS transport to deliver and receive messages, and as such the JMS target connector and JMS listening connector are used.
For outbound integrations with Oracle SOA B2B you set JMS target connector properties at the node-level. For inbound integrations with Oracle SOA B2B you set JMS listening connector properties in the integration gateway properties file. Setting these properties is discussed elsewhere in this section.
See Using the JMS Target Connector, Using the JMS Listening Connector
You must set up the JNDIFactory class names for the JMS provider in the section of the integrationGateway.properties file labeled JMS configuration Section.
When you set the JMSProvider property, the provider name that you enter must match the provider in the JNDIFactory class name exactly. You must set this property for both the JMS listening connector and the JMS target connector. This property is case-sensitive.
JMS Provider |
Property |
Description |
---|---|---|
Oracle WebLogic |
ig.jms.JMSProvider.JNDIFactory.Weblogic |
Specify the JNDIFactory class name for a Oracle WebLogic JMS provider. The default value is: weblogic.jndi.WLInitialContextFactory |
IBM MQ Series |
ig.jms.JMSProvider.JNDIFactory. MQSeries |
Specify the JNDIFactory class for an MQSeries JMS provider. The default value is: com.sun.jndi.fscontext.RefFSContextFactory |
You can also specify a service provider that is not listed. For example, if you are using MSMQ, enter the following value for the property:
ig.jms.JMSProvider.JNDIFactory.MSMQ=com.sun.jndi.fscontext.RefFSContextFactory
The JMS listening connector has two components: a subscriber and a queue listener. The JMS subscriber subscribes to different topics and the JMS queue listens on queues for new messages.
Note: The JMS listening connector always expects JMS messages in text format.
Receiving Messages
The JMS listening connector retrieves topics and queues that you have defined in integrationGateway.properties file. For each topic it starts a topic subscriber, and for each queue it starts a queue listener. When a message arrives either for a queue or topic, the JMS listening connector sends the message to the integration engine.
A parameter called ExternalMessageID is used to ensure that messages are received only once. When the JMS listening connector receives a message, it sets an external message ID in IBInfo and sends this information to the PeopleSoft Integration Broker with the message content. If the external message ID exists in IBInfo, the application server checks for duplicate messages. If a duplicate is found, an error is generated. The external message ID is optional. If specified, it must be unique and not exceed 70 characters.
Securing Messages to JMS Queues
PeopleSoft Integration Broker does not perform security validation checks on messages transmitted to JMS queues.
Note: JMS administrators must set up secure queues on providing systems.
Error Handling
If an error occurs during message processing, the JMS listening connector publishes the message back to either an error topic or an error queue. All error messages feature a header called ErrorDescription which contains a description of the error.
Note: If the application server returns the status 20, the message is published to the error topic and the response is logged in the integration gateway message log.
To capture errors you must set error topic or error queue properties in the JMS Configuration Section of the integrationGateway.properties file. These properties are discussed later in this section. If both an error topic and an error queue are set up and configured, only the error queue will capture error messages.
JMS Queue Listener Properties
You can configure multiple queues in the section of the integrationGateway.properties file labeled JMS Configuration Section. To configure multiple queues, use the convention, ig.queue1, ig.queue2, ig.queue3, and so on.
Property |
Description |
---|---|
ig.jms.Queues |
Specify the number of queue listeners to instantiate. |
ig.jms.Queue1 |
Specify the queue name. |
ig.jms.Queue1.Provider |
Specify the queue provider name. |
ig.jms.Queue1.JMSFactory |
Specify the JMSFactory name that is bound to JNDI for the queue. |
ig.jms.Queue1.MessageSelector |
(Optional.) Specify the message filter. |
ig.jms.Queue1.URL |
Specify the JMS provider’s URL to JNDI. |
ig.jms.Queue1.User |
(Optional.) Specify the JMS queue user name. |
ig.jms.Queue1.Password |
(Optional.) Specify the JMS queue password. If you choose to specify a password, you must encrypt it. See Encrypting Passwords. |
ig.jms.Queue1.MessageName |
This property is desupported and is being maintained for backwards compatibility only. |
ig.jms.Queue1.MessageVersion |
This property is desupported and is being maintained for backwards compatibility only. |
ig.jms.Queue1.OperationName |
(Optional.) Specify the name of the service operation and the service operation version. The format is: ig.jms.Queue1.OperationName=OperationName.OperationVersion. |
ig.jms.Queue1.RequestingNode |
(Optional.) Specify the name of the requesting node. |
ig.jms.Queue1.DestinationNode |
(Optional.) Specify the name of the destination node. |
ig.jms.Queue1.NodePassword |
(Optional.) Specify the password for the requesting node. If you choose to specify a password, you must encrypt it. See Encrypting Passwords. |
ig.jms.Queue1.SubChannel |
(Optional.) Specify the name of the subchannel. Messages published to this queue go to the subchannel indicated. |
JMS Topic Subscriber Properties
You can configure multiple topics, in the section of the integrationGateway.properties file labeled JMS configuration Section. To configure multiple topics, use the convention ig.topic1, ig.topic2, ig.topic3, and so on.
Property |
Description |
---|---|
ig.jms.Topics |
Specify the number of topic subscribers to instantiate. |
ig. jms.Topic1 |
Specify the topic name. |
ig. jms.Topic1.Provider |
Specify the topic provider name. |
ig. jms.Topic1.JMSFactory |
Specify the JMSFactory name that is bound to JNDI for the topic. |
ig. jms.Topic1.MessageSelector |
(Optional.) Specify the message filter. |
ig. jms.Topic1.URL |
Specify the JMS provider’s URL to JNDI. |
ig. jms.Topic1.User |
(Optional.) Specify the JMS topic user name. |
ig. jms.Topic1.Password |
(Optional.) Specify the JMS topic password. If you choose to specify a password, you must encrypt it. See Encrypting Passwords. |
ig.jms.Topic1.MessageName |
This property is desupported and is being maintained for backwards compatibility only. |
ig.jms.Topic1.MessageVersion |
This property is desupported and is being maintained for backwards compatibility only. |
ig.jms.Topic1.OperationName |
(Optional.) Specify the name of the service operation and the service operation version. The format is: ig.jms.Queue1.OperationName=OperationName.OperationVersion. |
ig.jms.Topic1.RequestingNode |
(Optional.) Specify the name of the requesting node. |
ig.jms.Topic1.DestinationNode |
(Optional.) Specify the name of the destination node. |
ig.jms.Topic1.NodePassword |
(Optional.) Specify the password for the requesting node. If you choose to specify a password, you must encrypt it. See Encrypting Passwords. |
ig.jms.Topic1.SubChannel |
(Optional.) Specify the name of the subchannel. Messages published to this topic go to the subchannel indicated. |
Error Queue Properties
To capture JMS listening connector errors in an error queue, set the following properties in the JMS Configuration Section of the integrationGateway.properties file.
Property |
Description |
---|---|
ig.jms.ErrorQueue |
Specify the name of queue to which error messages are published. |
ig.jms.ErrorQueue-Provider |
Specify the name of the JMS provider. |
ig.jms.ErrorQueue-User |
(Optional.) Specify the JMS error queue user name. |
ig.jms.ErrorQueue-Password |
(Optional.) Specify the JMS error queue password. If you choose to specify a password, you must encrypt it. See Encrypting Passwords. |
ig.jms.ErrorQueue-JMSFactory |
Specify the queue connection factory name. |
ig.jms.ErrorQueue-Url |
Specify the JMS provider’s URL to JNDI. |
Error Topic Properties
To capture JMS listening connector errors in an error topic, set the following properties in the JMS Configuration Section of the integrationGateway.properties file.
Property |
Description |
---|---|
ig.jms.ErrorTopic |
Specify the name of topic to which error messages are published. |
ig.jms.ErrorTopic-Provider |
Specify the name of the JMS provider. |
ig.jms.ErrorTopic-User |
(Optional.) Specify the JMS error topic user name. |
ig.jms.ErrorTopic-Password |
(Optional.) Specify the JMS error topic password. If you choose to specify a password, you must encrypt it. See Encrypting Passwords. |
ig.jms.ErrorTopic-JMSFactory |
Specify the JNDIFactory name. |
ig.jms.ErrorTopic-Url |
Specify the JMS provider’s URL to JNDI. |
JMS Listening Connector Properties for Integrating with Oracle SOA B2B Suite
For inbound integrations from Oracle SOA B2B Suite, you must set the following property in the integrationGateway.properties file:
ig.AS2.<FROM_PARTY>.<TO_PARTY>.MessageName=
Set the values as follows:
FROM_PARTY. Enter the sending node name.
TO_PARTY. Enter the receiving node name.
MessageName. Set this property equal to the message.version of the message.
For example:
ig.AS2.SOA_B2B.QE_LOCAL.MessageName=USER_PROFILE.VERSION1
In the example, SOA_B2B is the sending node, QE_LOCAL is the receiving node, and USER_PROFILE.VERSION1 is the message.version.
Information about setting properties for the JMS target connector for outbound integrations to Oracle SOA B2B is provided elsewhere in this section.
JMS Message Header Properties
For the JMS listening connector to process messages, you must set the following properties. You can set these properties in JMS message headers, the integrationGateway.properties file or in the body of the XML message.
You can specify JMS headers in the integrationGateway.properties file for both queues and topics. However you must be using separate queues or topics per requesting node/message combination.
You must supply the properties listed in the following table in the JMS message header when you publish messages from a JMS provider system to the integration gateway.
Property |
Description |
---|---|
MessageName |
Specify the name of service operation. |
RequestingNode |
Specify the requesting node name. |
FinalDestinationNode |
Specify the final destination nodes. If there are no values, set this property to Null. |
DestinationNode |
Specify the destination node names, separated with commas. If there are no values, set to "" (empty string). |
NodePassword |
Enter the node password. This password must be encrypted. See Encrypting Passwords. |
SubChannel |
(Optional.) Specify the name of a partitioning subqueue to be created for the service operation at runtime. All service operations with the same value for this parameter are processed in the same subqueue. Unlike the subqueues created by selecting partitioning fields, the subqueue that you specify here has no qualifying criteria except the name that you enter. Field-based partitioning is not used for service operations with this parameter. |
The following example shows specifying JMS header properties in the body of an XML message.
<?xml version="1.0" ?>
<IBRequest>
<ExternalOperationName>JMS_MessageName</ExternalOperationName>
<OperationType>Async_or_Synch</OperationType>
<From>
<RequestingNode>JMS_RequestingNode</RequestingNode>
<Password>JMS_NodePassword</Password>
<OrigUser></OrigUser>
<OrigNode></OrigNode>
<OrigProcess></OrigProcess>
<OrigTimeStamp></OrigTimeStamp >
</From>
<To>
<FinalDestination>JMS_FinalDestination</FinalDestination>
<DestinationNode>JMS_DestinationNode</DestinationNode>
</To>
<ContentSections>
<ContentSection>
<NonRepudiation></NonRepudiation>
<Data></Data>
</ContentSection>
</ContentSections>
</IBRequest>
When the message received specifies synchronous mode, a reference to the temporary queue or topic must be set in the JMS message header for the JMS listening connector to determination the destination of the message response. The JMS listening connector also sets the JMS correlation ID when it sends the response so the requestor can properly associate the response with its corresponding request.
If any of the message header properties are missing, an error is logged and an error is published to an error topic or error queue. The message that the connector publishes to the error topic has a property call error and is set to True. The error message that is published contains the following information: default message, message ID, message set, message parameters, and body of the message sent.
Starting and Shutting Down the JMS Listening Connector
Use the JMS Listening Connector Administration page to start or shut down the JMS listening connector.
Performing Administrative Tasks on JMS Listening Connectors
The JMS Listening Connector Administration page enables you to perform administrative tasks on JMS listener queues and subscriber topics, such as start, stop, and pause queues and topics. Using the JMS Listening Connector Administration page to administer JMS listening connectors is discussed elsewhere in the product documentation.
JMS is an application programming interface (API) for accessing message systems. JMS provides a standard Java-based interface to the message services of message-oriented middleware (MOM) providers. The JMS target connector is an adapter to JMS providers, and it can be used with MOM and JMS providers, such as Oracle Weblogic, IBM MQSeries and others. The following diagram illustrates how messages flow through the JMS API:
This diagram illustrations the flow of a message through the JMS API.

The primary features of JMS are.
Connection factories that are used to create connections to a specific JMS provider.
Separate publish, subscribe, and point-to-point messaging domains.
These are defined by separate interfaces so that a provider does not have to support both.
Topics for publish and subscribe, as well as queues for point-to-point messaging.
When multiple applications must receive the same message, publish and subscribe messaging is used. In publish and subscribe messaging, all of the subscribers subscribe to a topic and all of the publishers publish messages to a topic. The messaging system distributes messages from the publisher to the subscriber. This domain is mainly used for asynchronous messaging.
When one application must send a message to another application, point-to-point messaging is used. This domain is only for synchronous messaging. There are two basic types of point-to-point messaging systems. One uses a client that directly sends a message to another client. The other, more commonly used implementation uses a message queue.
The JMS target connector either publishes a message to a topic or inserts a message into a queue, based on the node-level properties that you set.
The JMS target connector supports only JNDI file context for the lookup of connection factories, topics, and queue names. (Lightweight Directory Access Protocol (LDAP) is not supported.)
The connector ID for the JMS target connector is JMSTARGET.
Asynchronous and Synchronous Communication
The JMS target connector provides both synchronous and asynchronous modes of communication. When the node level property ReplyTo is set to False, communication is asynchronous. When it is set to True, communication is synchronous.
For asynchronous communication, the JMS target connector publishes messages to MOM or drops messages into a queue and commits the session. It does not wait for a response from the destination system. For synchronous communication, after the connector publishes messages or drops them into a queue, it waits for the temporary topic or queue to respond.
For synchronous communication, the exchanges involve only the publisher and a single subscriber. When a JMS-compliant remote node receives a synchronous request message from PeopleSoft, it must use the value of the JMSCorrelationID of the request message to populate the correlation ID of its response message. When the response is received by the PeopleSoft JMS target connector, it compares the JMSCorrelationID of the response message with the JMSCorrelationID of the request. The message is not accepted if these two IDs do not match.
When sending messages either synchronously or asynchronously, the connector sets different string properties in the JMS message header. The properties are used as metadata about the message. The JMS target connector also sets a reference to the temporary queue or topic from which it requires the response.
JMS Target Connector and Message Segments
The JMS target connect is segment-aware and you may use it to send message segments to integration partners.
IBInfo Data Contained in JMS Headers
A message has two parts—the transaction data and the IBInfo header that is the routing envelope used by PeopleSoft Integration Broker. In the event that a receiving system wants to make use of the IBInfo data, IBInfo header information is included when publishing messages to non-PeopleSoft systems when using the JMS target connector or the HTTP target connector.
When using the JMS target connector to send messages to non-PeopleSoft systems, the following IBInfo data is contained in the JMS headers. The content of the message (message body) is not impacted.
RequestingNode
FinalDestinationNode
DestinationNodes
MessageName
MessageType
OrigTimeStamp
NonRepudiation
Gateway-Level Connector Properties
There are no gateway-level JMS target connector properties that you must set.
Node-Level Connector Properties
You must set either a JMS queue or JMS topic for a given node definition. If both are set or are missing the PeopleSoft Integration Broker generates an invalid message exception.
Note: You must register JMS-administered objects—such as topics, queues, and connection factories—that you include as connector properties. The documentation for specific providers should provide instructions on how to register the topics.
JMS message types can be Text, Map Message, Stream, or Object. However, PeopleSoft provides only text messages. If you need to use other message types, you can write a class that implements the com.peoplesoft.pt.integrationgateway.common.jms.ProcessJMSMessage interface, and you set the class name as a value for JMSMessageTypeClass.
The provider name that you specify for the JMSProvider in the node definition must match the JMSProvider.JNDIFactory property that you specify in the integrationGateway.properties file.
The following table describes the node-level connector properties:
Property ID |
Property Name |
Description |
---|---|---|
JMSTARGET |
AS2MODE |
This property is used for integrations with Oracle SOA B2B Suite. Set the property value to Y to enable integrations with Oracle SOA B2B. Values are:
There are additional JMS target connector properties you must set for integrations with Oracle SOA B2B. See, “JMS Target Connector Properties for Integrations with Oracle SOA B2B” in this section. Note: PeopleSoft recommends using the Oracle SOA Suite B2B component for all EDI integrations, including those based on the AS2 specification. Note: PeopleTools 8.61 is the last release where AS2 Connectors are supported. AS2 Connectors will be removed in future PeopleTools release. |
JMSTARGET |
JMSAcknowledgement |
Specify the acknowledgment type. Values are:
|
JMSTARGET |
JMSDeliveryMode |
Specify either durable or nondurable delivery. Values are:
|
JMSTARGET |
JMSFactory |
Specify the factory name. The default value is QueueConnectionFactory. |
JMSTARGET |
JMSMessageTimeToLive |
Specify the time in seconds. |
JMSTARGET |
JMSMessageType |
Specify the type of message to send. Values are:
|
JMSTARGET |
JMSMessageTypeClass |
(Optional.) Specify the implementation class of ProcessJMSMessage. You must set this property when the JMSMessageType is anything other than Text. |
JMSTARGET |
JMSPassword |
(Optional.) Specify the password to access the connection. If you choose to specify a password, you must encrypt it. See Encrypting Passwords. |
JMSTARGET |
JMSPriority |
Specify the message priority for delivery. Values range from 0 to 9. A value of 9 indicates the highest priority. The default is 0. |
JMSTARGET |
JMSProvider |
Specify the JMS provider's name. Values are:
|
JMSTARGET |
JMSQueue |
(Optional.) Specify the queue name, if you use a queue. You must use and specify either a topic or a queue. |
JMSTARGET |
JMSReplyTo |
Set this property to True to receive a response from the external system. Values are:
|
JMSTARGET |
JMSTopic |
(Optional.) Specify the topic name, if you use a topic. You must use either a topic or a queue. |
JMSTARGET |
JMSUrl |
Specify the URL. |
JMSTARGET |
JMSUserName |
(Optional.) Specify the username to establish a connection to the JMS. |
JMSTARGET |
JMSWaitForResponse |
Specify the time in milliseconds for the connector to wait for the temporary response queue to return a synchronous response message. If a response fails to appear in the queue within the specified period, the transaction fails and the queue is deleted. The default value is 60000 (60 seconds). |
JMSTARGET |
RemoveSOAP-Response |
(Optional.) Remove the SOAP wrapping from response messages returned from a third party. The valid values are:
|
JMSTARGET |
SOAPUpContent |
(Optional.) Automatically wrap outbound transactions in SOAP format. The valid values are:
|
JMSTARGET |
Use-WSA10-Namespace |
(Optional.) Override the WS-Addressing namespace URI used in outbound messages that have been SOAP wrapped via the connector property SOAPUpContent. The valid values are:
|
HEADER |
SendUncompressed |
Specify whether to send messages decompressed. Values are:
|
HEADER |
SOAPAction |
(Optional.) Enable third-party systems (for example, Universal Description, Discovery, and Integration (UDDI) sites) to receive SOAP transactions over HTTP. The default value is ”“ (a null string). |
JMS Target Connector Properties for Integrations with Oracle SOA B2B
The following table lists node-level properties that you must set for the JMS target connector for outbound integrations with Oracle SOA B2B.
Set these properties on the Nodes – Connector page. To access the page select
and click the Connectors tab.For all properties except for AS2MODE, you must add a new row to the properties grid and manually enter property ID, property name, and property values.
Property ID |
Property Name |
Description |
---|---|---|
JMSTARGET |
AS2MODE |
This property is used for integrations with Oracle SOA B2B Suite. Set the property value to Y to enable integrations with Oracle SOA B2B. Values are:
|
JMSTARGET |
DOCTYPE_NAME |
This property is used for integrations with Oracle SOA B2B Suite. Enter the doctype name. This property is similar to a message name. For example, purchase_order. |
JMSTARGET |
DOCTYPE_REVISION |
This property is used for integrations with Oracle SOA B2B Suite. Enter the version of the doctype. For example, 1.0. |
JMSTARGET |
FROM_PARTY |
This property is used for integrations with Oracle SOA B2B Suite. Enter the name of the sending node. |
JMSTARGET |
TO_PARTY |
This property is used for integrations with Oracle SOA B2B Suite. Enter the name of the node that Oracle SOA B2B uses to route the service operation to the AS2 partner. |
Information about setting properties for the JMS listening connector for inbound integrations from Oracle SOA B2B is provided earlier in this topic.
Note: PeopleSoft recommends using the Oracle SOA Suite B2B component for all EDI integrations, including those based on the AS2 specification.
Note: PeopleTools 8.61 is the last release where AS2 Connectors are supported. AS2 Connectors will be removed in future PeopleTools release.
Additional Setup Steps
Before using the JMS target connector, verify that:
The JMS messaging system is running.
All JMS connection factories, topics, and queues are registered for JNDI lookup.
A username and a password are created in the JMS system for use as values for the properties JMSUserName and JMSPassword.
JMS Target Connector Errors and Exceptions
The JMS target connector may generate the following exceptions:
Exception |
Cause |
---|---|
InvalidMessageException |
This exception is generated when any node level or connector parameters are not set properly. Examples are:
|
ExternalApplicationException |
This exception is generated when:
|
GeneralFrameWorkException |
This exception is generated when a naming exception occurs. |
The JMS providers that PeopleSoft supports are Oracle WebLogic, and IBM MQSeries. However, to meet your business requirements you can add generic JMS providers.
This section provides lists of configuration tasks to perform on the JMS listening connector and JMS target connector to add a generic JMS provider to PeopleSoft Integration Broker.
Configuring the JMS Listening Connector for Generic JMS Providers
To configure the JMS listening connector for a generic JMS provider:
Obtain the following information from the provider:
JMS jar file.
JNDIFactory information
Determine if messaging will be in topics or queues.
Determine if error handling will be in topics or queues.
Update JMS properties in the integrationGateway.properties file:
Update the JNDIFactory entry.
For example if the provider were Tibco the entry might be:
ig.jms.JMSProvider.JNDIFactory.Tibco=com.tibco.JMSFactory
Populate the appropriate messaging topic and queue entries based on how messaging will be handled.
Populate the appropriate error topic and queue entries based on how messaging will be handled.
In addition to the information provided in this section, review the JMS Headers Properties section of this topic which discusses the required information that must be in the headers of each message processed by the JMS listening connector.
Configuring the JMS Target Connector for Generic JMS Providers
To configure the JMS target connector for a generic JMS provider:
Define a node for the provider.
Assign the JMS target connector to the provider node and specify the target connector properties.