Configuring the Sender JMS Adapter
You need to configure the sender JMS adapter to send JMS messages to the Integration Engine or the PCK.
You
configure the adapter on the Parameters tab page during the definition of a communication
channel in the
Integration Server
or in the PCK. In addition
to the adapter configuration, on the Module tab page in the module processor,
you can specify generic modules, which give the adapter additional
functions.
The adapter determines the payload of the XI message according to how it is configured. However, the message header information is determined from the corresponding sender agreement for the communication channel.
The following conditions apply to the adapter for the definition of the sender agreement:
· The communication channel defined here must have exactly one sender agreement.
· At least the interface name and the sender service must be qualified in the sender agreement. All other fields are optional in accordance with the general rules for defining sender agreements.
1. You have created a new communication channel or have opened an existing one.
2. On the Parameters tab page you have selected the adapter type JMS.
3. You have selected the Senderradio button to define the adapter as a sender adapter.
To configure the adapter, specify the following:
SonicMQ JMS Provider
WebSphereMQ (non-JMS)
Access JMS Provider with JNDI
(Read) JMS Provider Administered Objects from File
Access JMS Provider Generically
JMS 1.x
Select the Adapter Engine on the Integration Server, or select a non-centrally installed Adapter Engine. This selection is not available in the PCK.
Depending on the transport protocol you have selected, you make specifications for the respective JMS provider. See the relevant JMS-provider documentation for details about the individual parameters. See also: JMS-Provider-Specific Settings
Parameter |
Entry |
Transactional JMS Session |
If you want to use a transactional JMS session, set the indicator. Following processing of a message, a transactional session ends either with a COMMIT, or in the case of an error, with a ROLLBACK. |
JMS Queue User |
User for accessing the JMS queue |
JMS Queue Password |
Password (with confirmation) for accessing the JMS queue |
JMS Message Selector |
You use the JMS message selector to specify conditions that a JMS message in the specified JMS queue must meet in order to be processed by the sender adapter.
For more information about the JMS message selector, see java.sun.com/j2ee/sdk_1.3/techdocs/api/index.html under javax.jms and Message.
|
Define which algorithm is to be used to create the message ID of a new XI message. The prerequisite for selecting an ID is that it is a GUID (globally unique identifier) according to ISO-11578.

If the message ID is not a GUID, message processing will fail. This can cause message duplicates if the ID is not unique. Furthermore, if the GUID does not conform to ISO-11578, this can trigger a GUIDFormatException.
· Set XI Message ID (MessageID) To:
¡ GUID (Recommended Value)
¡ JMSMessageID (Uniqueness Is JMS-Provider-Dependent)
¡ JMSCorrelationID (Uniqueness Is JMS-Sender-Dependent)
¡ JMSProperty (Uniqueness Is JMS-Sender-Dependent)
Enter the JMS Property Name. This value is set for the XI message ID.
If the JMSCorrelationID or JMSProperty are not set in the JMS message, a message ID is generated automatically.
· If you have selected JMSMessageID, JMSCorrelationID, or JMSProperty and entered a JMS message ID in these fields, you should see the Remove 'ID:' Marker from JMSMessageIDindicator. Set the indicator.
This is necessary because the JMS specification stipulates that each JMS message ID starts with 'ID'. However, this conflicts with ISO-11578.
· Set XI Conversation ID (ConversationID) To:
¡ No value
If you choose this setting, the XI conversation ID is not set.
¡ JMSMessageID (Uniqueness Is JMS-Provider-Dependent)
¡ JMSCorrelationID (Uniqueness Is JMS-Sender-Dependent)
¡ JMSProperty (Uniqueness Is JMS-Sender-Dependent)
Enter the JMS Property Name. This value is set for the XI message ID.
¡ Stored JMSCorrelationID of request
The saved JMSCorrelationID of the request is used.
For more information about the ConversationID, see: Parts of an XI Message, under ConversationID and RefToMessageID.
Parameter |
Entry |
Mapping of Message |
If you want the JMS payload to contain the entire message, choose Entire Message = JMS Payload. If you only want the JMS payload to contain the payload of the message, choose Message Payload = JMS Payload. |
Quality of Service |
Specifies how the Integration Engine/PCK will process a message. · Exactly Once (asynchronous processing with guaranteed execution exactly once) · Exactly Once In Order (asynchronous processing using queues, in other words guaranteed execution exactly once and maintaining the sequence of successive messages). ¡ Specify the Queue ID. ¡ Specify the Processing J2EE Cluster Server (Cluster ID). This specification stops queue-jumping in the JMS queue. The valid cluster ID is located on the J2EE server – Administrator under Server.
If you do not enter the cluster ID, the EOIO channel is activated automatically on a different working node. This configuration ensures node failover by the adapter in a clustered environment. |
Time Period for Duplicate Check for EO(IO) (secs) |
To check for duplicate messages, IDs must be saved in the database. To prevent the database from getting unnecessarily large, these IDs must be deleted after a certain amount of time. Specify in seconds the time period after which you want IDs to be deleted (after one day, for example, if you check message monitoring daily). |
Parameter |
Entry |
Wait After Message Error (msecs) |
Enter the number of milliseconds that the adapter must wait when a processing error occurs before further messages are processed. In transactional processing, it can make sense to specify a certain time period, for example, because messages with errors remain in the queue following a ROLLBACK. |
Wait Before Reconnect (msecs) |
Specify a period of time after which an attempt will be made to reestablish a connection following a connection error on the JMS side. The time period must be specified in milliseconds. No attempt is made if the value is set to -1.
Your JMS provider must support the registration of an ExceptionListener for this.
|
· To store adapter attributes in the message header of the XI message, select Set Adapter-Specific Message Attributes.
· To apply the following attributes in XI message headers, set the corresponding indicators:
Name |
Technical Name |
JMS Message Correlation ID |
DCJMSCorrelationID |
JMS Message Delivery Mode |
DCJMSDeliveryMode |
JMS Message Destination |
DCJMSDestination |
JMS Message Expiration |
DCJMSExpiration |
JMS Message ID |
DCJMSMessageID |
JMS Message Priority |
DCJMSPriority |
JMS Message Redelivered Flag |
DCJMSRedelivered |
JMS Message ReplyTo Destination |
DCJMSReplyTo |
JMS Message Time Stamp |
DCJMSTimestamp |
JMS Message Type |
DCJMSType |
Used JMS Message Selector |
DCJMSMessageSelector |
Used JMS Message Queue |
DCJMSMessageQueue |
JMS User |
DCJMSUser |
· If you want to set additional JMS message attributes, select Specify Additional JMS Message Properties (Maximum of 10).
· In the table, enter the names of the JMS message properties whose values are to be included in the message header of the XI message.
The technical names of the additional attributes are DCJMSMessageProperty0, DCJMSMessageProperty1, ..., DCJMSMessageProperty9.
You can enter more than 10 properties in the table, but only the first 10 are taken into account.
The attribute namespace for the adapter is http://sap.com/xi/XI/System/JMS.
Set the adapter to Active to enable messages to be exchanged.
To make additional settings or replace the default settings, enter the parameters and values in the table.
You can set the following parameters, for example:
Name |
Value |
JMSMessageClass |
com.ibm.jms.JMSMessage |
JMS.Message.method.setStringProperty |
java.lang.String XAppId, java.lang.String myapp |
You can set additional JMS parameters for all JMS providers.