Integration Server 10.15 | Web Services Developer’s Guide | Working with Web Service Connectors | Setting Transport Headers for JMS
 
Setting Transport Headers for JMS
When a web service connector sends a SOAP message over JMS, you can pass in name/value pairs to the transportHeaders input parameter of the web service connector. Integration Server uses these name/value pairs to create JMS message headers and properties. For some headers, values that you specify in transportHeaders might override a corresponding value in the source WSDL and the web service endpoint alias assigned to the JMS binder.
By passing in name/value pairs into transportHeaders, you can specify the following in the JMS message sent by the web service connector:
*JMS message header fields
*Standard message properties as defined by JMS
*Application-specific properties
*Provider-specific properties
*Run-time properties used by Integration Server
Keep the following information in mind when setting name/value pairs for transportHeaders for JMS.
*Specify a key in transportHeaders for each header field that you want to set, where the key’s name represents the name of the header field and the key’s value represents the value of that header field.
*The names and values supplied to transportHeaders must be of type String. If a transport header has a name or value that is not of type String, the header will not be included in the message.
*You can specify the following JMS message header fields in transportHeaders:
*JMSCorrelationID
*JMSType
Note:
The JMSCorrelationID and JMSType names are case-sensitive.
*You can specify the following JMS-defined properties in transportHeaderes:
*JMSXGroupID
*JMSXGroupSeq
If the value of JMSXGroupSeq is not an integer, Integration Server ignores the name/value pair and does not place it in the message header.
Note:
The JMSXGroupID and JMSXGroupSeq names are case-sensitive.
*The “JMSX” prefix is reserved for JMS-defined properties. If a header whose name starts with “JMSX” is passed into transportHeaders and it is not named JMSXGroupID or JMSXGroupSeq, Integration Server generates a fault and returns it to the web service connector.
*You can set any provider-specific property whose name starts with “JMS_” in transportHeaders. Integration Server maps a supplied name/value pair whose name starts with “JMS_” directly to a JMS message property. Because the JMS standard reserves the prefix “JMS_<vendor_name>” for provider-specific properties, Integration Server does not validate the name or value of this content.
Note:
The JMS provider determines which provider-specific properties to accept and include in the JMS message properties. For more information about provider-specific message properties and how the JMS provider handles them, review the JMS provider documentation.
*You can use transportHeaders to specify run-time properties that affect the values of the JMS message and JMS message headers. The following table identifies these properties and indicates the JMS message header fields affected by each property.
Property Name
Description
jms.async
Indicates whether this is a synchronous or asynchronous request/reply.
This run-time property does not affect a JMS message header field
If the web service connector calls an In-Out operation and you want Integration Server to write the request message to the client side queue when the JMS provider is not available, you must pass jms.async= true into transportHeaders. Additionally, to use the client side queue, the Use CSQ property must be set to true for the JMS binder. For information about how to retrieve the response to an asynchronous response, see Asynchronously Invoking an In-Out Operation.
Value
Description
true
Indicates this is an asynchronous request/reply. Integration Server does not wait for a response message before executing the next step in the flow service.
If jms.async is true, Integration Server ignore the timeout value passed in to the web service connector.
false
Default. Indicates this is a synchronous request/reply. Integration Server waits for a response before executing the next step in the flow service.
jms.deliveryMode
Specifies the message delivery mode for the message. Integration Server uses this value to set the JMSDeliveryMode header.
Specify one of the following values:
Value
Description
PERSISTENT
Indicates the request message is persistent.
2
Default. Indicates the request message is persistent.
NON_PERSISTENT
Indicates the request message is not persistent.
1
Indicates the request message is not persistent.
Note:
If the jms.deliveryMode is not one of the above values, Integration Server ignores the name/value pair and uses the default value of 2.
jms.messageType
Specifies the message type for the request message sent by the web service connector.
Specify one of the following:
*BytesMessage
*TextMessage
The message type specified by jms.messageType overwrites the default message type set by the watt.server.soapjms.defaultMessageType configuration parameter.
Sending a TextMessage can be useful for debugging purposes because the resulting message will be a human-readable format.
The message type of the request message determines the message type of the response message.
Note:
If the jms.messageType value is not BytesMessage or TextMessage, Integration Server ignores the name/value pair and uses the default value of BytesMessage.
jms.timeToLive
Length of time, in milliseconds, that the JMS provider retains the message. A value of 0 means that the message does not expire.
The JMS provider uses this value to set the JMSExpiration header in the sent JMS message.
Note:
If the jms.timeToLive value is not a valid Long, Integration Server ignores the property and uses the default value of 0.
jms.priority
Specifies the message priority. The JMS standard defines priority levels from 0 to 9, with 0 as the lowest priority and 9 as the highest.
Integration Server uses this value to set the JMSPriority header.
Note:
If the jms.priority value is not a value between 0 and 9, Integration Server ignores the property and uses the default value of 4.
*The lowercase “jms.” prefix is reserved for run-time properties used by Integration Server. If a header starts with “jms.” and is not one of the properties defined by Integration Server, Integration Server ignores the property.