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.

See Adding Generic JMS Providers.

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.

See Oracle B2B Documentation

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 username.

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 is a deprecated property and is being maintained for backwards compatibility only.

ig.jms.Queue1.MessageVersion

This is a deprecated property 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 username.

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 is a deprecated property and is being maintained for backwards compatibility only.

ig.jms.Topic1.MessageVersion

This is a deprecated property 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 username.

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 username.

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.

See Applying Queue Partitioning.

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.

See Administering JMS Listening Connectors

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.

See Administering JMS Listening Connectors

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:

Image: Message flow through the JMS API

This diagram illustrations the flow of a message through the JMS API.

Message flow 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.

See Working With Message Segments.

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:

  • Y.

  • N. (Default.)

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.

JMSTARGET

JMSAcknowledgement

Specify the acknowledgment type. Values are:

  • Auto_Acknowledge. (Default.)

  • Client_Acknowledge.

JMSTARGET

JMSDeliveryMode

Specify either durable or nondurable delivery. Values are:

  • Persistent..

  • Non-persistent. (Default.)

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:

  • Text (default).

  • MapMessage.

  • Stream.

  • Object.

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:

  • MQSeries. (Default.)

  • WebLogic..

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:

  • True.

  • False (Default.)

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:

  • Y. (Default.) The SOAP formatting is removed from response messages.

  • N. The SOAP formatting is not removed from response messages.

JMSTARGET

SOAPUpContent

(Optional.) Automatically wrap outbound transactions in SOAP format. The valid values are:

  • Y. (Default.) Outbound messages are wrapped in SOAP format.

  • N. Outbound messages are not wrapped in SOAP format.

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:

  • Y. (Default.) The namespace URI http://www.w3.org/2005/08/addressing is used.

  • N. The system default WS-Addressing namespace URI is used.

HEADER

SendUncompressed

Specify whether to send messages decompressed. Values are:

  • Y: Send the message decompressed and unencoded. This is the default value.

  • N: Send the message compressed and base 64 encoded.

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 PeopleTools > Integration Broker > Integration Setup > Nodes 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:

  • Y.

  • N. (Default.)

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.

Additional Setup Steps

Before using the JMS target connector, verify that:

  1. The JMS messaging system is running.

  2. All JMS connection factories, topics, and queues are registered for JNDI lookup.

  3. 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:

  • Both queue and topic are specified.

  • Neither queue nor topic is specified.

  • A JMS security exception is generated.

    (Verify that the username and password are correct.)

  • A naming exception occurs.

ExternalApplicationException

This exception is generated when:

  • The correlation ID does not match when the ReplyTo property is set to True.

  • The message could not put into a queue, or a topic could not be published.

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.