Getting Started with the IBM Resource Adapter for Java Message Service with WebSphere Application Server

This guide provides information to help you get started with installing, configuring and using the IBM® Resource Adapter for Java™ Message Service (JMS) with IBM WebSphere® Application Server. The guide consists of the following sections:

 

Introduction

The IBM Resource Adapter for Java Message Service with WebSphere Application Server is a J2EE™ Connector Architecture v1.5 compliant resource adapter that provides JMS v1.1 connections to a service integration bus messaging engine in WebSphere Application Server Version v6.0.2 (or above) or any IBM product that incorporates the service integration bus. The connection to the messaging engine can be either TCP or SSL. HTTP connectivity is not supported.

 

You can install the resource adapter in any supported third party (that is, non WebSphere Application Server) Java 2 Extended Edition (J2EE) v1.4 compliant application server. The resource adapter supports the following third party application servers:

 

  • Apache Geronimo v1.2 or later
  • WebSphere Application Server Community Edition v1.1 or later

Installing the resource adapter

To install the resource adapter use J2SE 5.0 or later and enter:

 

java –jar sibra_install-<build>.jar [flags] [positional arguments]

 

flags:

-text                install using a command-line interface

-silent              install using silent license acceptance

 

positional arguments:

install directory          directory to install into

 

For example, to perform a silent install into c:\jms use:

 

java –jar sibra_install-<build>.jar –silent c:\jms

 

The installed directories and their contents are:

 

../docs 

The documentation for the resource adapter

../etc    

The default WebSphere Application Server client key and trust files required for SSL

../license

License files

../properties

An example sib.client.ssl.properties file

../runtimes

The resource adapter

Deploying after installation

To make the resource adapter useable in a third party application server, the resource adapter must first be deployed. The mechanism for deploying the resource adapter into a third party application server is controlled by means of an application server specific deployment process. Refer to the third party application server documentation for details of how to deploy a resource adapter. Part of the deployment step will be to configure a set of JMS resources that the deployed resource adapter instance will support.

 

The following outbound JMS resources that can be configured as Java Naming and Directory Interface (JNDI) accessible resources:

 

  • Connection factories
  • Queue Connection factories
  • Topic Connection factories
  • Queues
  • Topics

 

Inbound Message Driven Beans (MDBs) can be configured by means of activation configurations.

Supported configuration properties

The tables in this section list the supported configuration properties for JMS resources.

Connection factory properties

Property name

Description

Permitted values

Default

BusName

The name of the service integration bus to connect to

 

 

ClientID

The JMS client identifier needed for durable topic subscriptions on all connections created using this connection factory

 

 

UserName

 

 

 

Password

 

 

 

NonPersistentMapping

The reliability applied to nonpersistent JMS messages sent using this connection factory

BestEffortNonPersistent

ExpressNonPersistent

ReliableNonPersistent

ExpressNonPersistent

PersistentMapping

The reliability applied to persistent JMS messages sent using this connection factory

ReliablePersistent

AssuredPersistent

ReliablePersistent

DurableSubscriptionHome

The name of the messaging engine used to store messages delivered to durable subscriptions for objects created from this JMS connection factory

 

 

ReadAhead

Read ahead is an optimization that preemptively assigns messages to consumers. This improves the time taken to satisfy consumer requests

AlwaysOn

AlwaysOff

Default

Default

Target

The name of a target that identifies a group of messaging engines. Specify the type of target using the Target type property

 

 

TargetType

The type of target named in the Target property

BusMember

Custom

ME

BusMember

TargetSignificance

This property specifies the significance of the target group

Required

Preferred

Required

TargetTransportChain

The name of the protocol that resolves to a group of messaging engines

 

 

ProviderEndpoints

The list of comma separated endpoints used to connect to a bootstrap server

 

 

ConnectionProximity

The proximity of messaging engines that can accept connection requests, in relation to the bootstrap messaging engine

Server

Cluster

Host

Bus

Bus

TemporaryQueueNamePrefix

The prefix of up to twelve characters used for names of temporary queues created by applications that use this connection factory

 

 

TemporaryTopicNamePrefix

The prefix used at the start of temporary topics created by applications using this connection factory

 

 

ShareDurableSubscriptions

Controls whether or not durable subscriptions are shared across connections with members of a server cluster

InCluster

AlwaysShared

NeverShared

InCluster

ConsumerDoesNotModifyPayloadAfterGet

When enabled, Object Messages received by a message consuming application that has connected to this connection factory will only have their message data serialized by the system when absolutely necessary. The data obtained from these messages must be treated as readOnly by applications

true

false

false

ProducerDoesNotModifyPayloadAfterSet

When enabled, Object/Bytes Messages sent by a message producing application that has connected to the bus using this connection factory will not have their data copied when set and the system will only serialize the message data when absolutely necessary. Applications sending such messages must not modify the data once it has been set into the message

true

false

false

 

Queue Connection factory properties

Property name

Description

Permitted values

Default

BusName

The name of the service integration bus to connect to

 

 

UserName

 

 

 

Password

 

 

 

NonPersistentMapping

The reliability applied to nonpersistent JMS messages sent using this connection factory

BestEffortNonPersistent

ExpressNonPersistent

ReliableNonPersistent

ExpressNonPersistent

PersistentMapping

The reliability applied to persistent JMS messages sent using this connection factory

ReliablePersistent

AssuredPersistent

ReliablePersistent

ReadAhead

Read ahead is an optimization that preemptively assigns messages to consumers. This improves the time taken to satisfy consumer requests

AlwaysOn

AlwaysOff

Default

Default

Target

The name of a target that identifies a group of messaging engines. Specify the type of target using the Target type property

 

 

TargetType

The type of target named in the Target property

BusMember

Custom

ME

BusMember

TargetSignificance

This property specifies the significance of the target group

Required

Preferred

Required

TargetTransportChain

The name of the protocol that resolves to a group of messaging engines

 

 

ProviderEndpoints

The list of comma separated endpoints used to connect to a bootstrap server

 

 

ConnectionProximity

The proximity of messaging engines that can accept connection requests, in relation to the bootstrap messaging engine

Server

Cluster

Host

Bus

Bus

TemporaryQueueNamePrefix

The prefix of up to twelve characters used for names of temporary queues created by applications that use this connection factory

 

 

ConsumerDoesNotModifyPayloadAfterGet

When enabled, Object Messages received by a message consuming application that has connected to this connection factory will only have their message data serialized by the system when absolutely necessary. The data obtained from these messages must be treated as readOnly by applications

true

false

false

ProducerDoesNotModifyPayloadAfterSet

When enabled, Object/Bytes Messages sent by a message producing application that has connected to the bus using this connection factory will not have their data copied when set and the system will only serialize the message data when absolutely necessary. Applications sending such messages must not modify the data once it has been set into the message

true

false

false

 

Topic Connection factory properties

Property name

Description

Permitted values

Default

BusName

The name of the service integration bus to connect to

 

 

ClientID

The JMS client identifier needed for durable topic subscriptions on all connections created using this connection factory

 

 

UserName

 

 

 

Password

 

 

 

NonPersistentMapping

The reliability applied to nonpersistent JMS messages sent using this connection factory

BestEffortNonPersistent

ExpressNonPersistent

ReliableNonPersistent

ExpressNonPersistent

PersistentMapping

The reliability applied to persistent JMS messages sent using this connection factory

ReliablePersistent

AssuredPersistent

ReliablePersistent

DurableSubscriptionHome

The name of the messaging engine used to store messages delivered to durable subscriptions for objects created from this JMS connection factory

 

 

ReadAhead

Read ahead is an optimization that preemptively assigns messages to consumers. This improves the time taken to satisfy consumer requests

AlwaysOn

AlwaysOff

Default

Default

Target

The name of a target that identifies a group of messaging engines. Specify the type of target using the Target type property

 

 

TargetType

The type of target named in the Target property

BusMember

Custom

ME

BusMember

TargetSignificance

This property specifies the significance of the target group

Required

Preferred

Required

TargetTransportChain

The name of the protocol that resolves to a group of messaging engines

 

 

ProviderEndpoints

The list of comma separated endpoints used to connect to a bootstrap server

 

 

ConnectionProximity

The proximity of messaging engines that can accept connection requests, in relation to the bootstrap messaging engine

Server

Cluster

Host

Bus

Bus

TemporaryTopicNamePrefix

The prefix used at the start of temporary topics created by applications using this connection factory

 

 

ShareDurableSubscriptions

Controls whether or not durable subscriptions are shared across connections with members of a server cluster

InCluster

AlwaysShared

NeverShared

InCluster

ConsumerDoesNotModifyPayloadAfterGet

When enabled, Object Messages received by a message consuming application that has connected to this connection factory will only have their message data serialized by the system when absolutely necessary. The data obtained from these messages must be treated as readOnly by applications

true

false

false

ProducerDoesNotModifyPayloadAfterSet

When enabled, Object/Bytes Messages sent by a message producing application that has connected to the bus using this connection factory will not have their data copied when set and the system will only serialize the message data when absolutely necessary. Applications sending such messages must not modify the data once it has been set into the message

true

false

false

 

Queue properties

Property name

Description

Permitted values

Default

QueueName

The name of the associated queue on the service integration bus

 

 

DeliveryMode

The delivery mode for messages sent to this destination. This controls the persistence of messages on this destination

Application

Persistent

NonPersistent

 

TimeToLive

The default length of time in milliseconds from its dispatch time that a message sent to this destination should be kept by the system

 

 

Priority

The relative priority for messages sent to this destination, in the range 0 to 9, with 0 as the lowest priority and 9 as the highest priority

 

 

ReadAhead

Read ahead is an optimization that preemptively assigns messages to consumers. This improves the time taken to satisfy consumer requests

AlwaysOn

AlwaysOff

AsConnection

Default

AsConnection

BusName

The name of the service integration bus to connect to

 

 

 

Topic properties

Property name

Description

Permitted values

Default

TopicSpace

The name of the topic space that contains the topic, on the service integration bus defined by the Bus name property

 

Default.Topic.Space

TopicName

The name of the topic that this JMS topic is assigned to, in the topic space defined by the Topic space property

 

 

DeliveryMode

The delivery mode for messages sent to this destination. This controls the persistence of messages on this destination

Application

Persistent

NonPersistent

 

TimeToLive

The default length of time in milliseconds from its dispatch time that a message sent to this destination should be kept by the system

 

 

Priority

The relative priority for messages sent to this destination, in the range 0 to 9, with 0 as the lowest priority and 9 as the highest priority

 

 

ReadAhead

Read ahead is an optimization that preemptively assigns messages to consumers. This improves the time taken to satisfy consumer requests

AlwaysOn

AlwaysOff

AsConnection

Default

AsConnection

BusName

The name of the service integration bus to connect to

 

 

 

Activation Configuration properties

Property name

Description

Permitted values

Default

Required/Optional

Destination

The name of the destination on the service integration bus

 

 

Required

ProviderEndpoints

The list of comma separated endpoints used to connect to a bootstrap server

 

 

Required

DestinationType

Whether the message-driven bean uses a queue or topic destination

javax.jms.Queue

javax.jms.Topic

 

Required

BusName

The name of the service integration bus to connect to

 

 

Required

MessageSelector

The JMS message selector used to determine which messages the message-driven bean receives. The value is a string that is used to select a subset of the available messages. The syntax is based on a subset of the SQL 92 conditional expression syntax, as described in the JMS specification. Refer to the WebSphere Application Server InfoCenter for more information.

 

 

Optional

AcknowledgeMode

How the session acknowledges any messages it receives

Auto-acknowledge

Dups-ok-acknowledge

Auto-acknowledge

Optional

SubscriptionDurability

Whether a JMS topic subscription is durable or nondurable

Durable

Nondurable

Nondurable

Optional

SubscriptionName

The subscription name needed for durable topic subscriptions. Required field when using a durable topic subscription

 

 

Optional

MaxBatchSize

The maximum number of messages received from the messaging engine in a single batch.

1 through 2147483647

1

Optional

MaxConcurrency

The maximum number of endpoints to which messages are delivered concurrently

1 through 2147483647

10

Optional

RetryInterval

The delay (in seconds) between attempts to connect to a messaging engine

1 through 2147483647

30

Optional

UserName

 

 

 

Optional

Password

 

 

 

Optional

DurableSubscriptionHome

The name of the messaging engine used to store messages delivered to durable subscriptions for objects created from this JMS connection factory

 

 

Optional

ShareDurableSubscriptions

Controls whether or not durable subscriptions are shared across connections with members of a server cluster

InCluster

AlwaysShared

NeverShared

InCluster

Optional

ClientID

The JMS client identifier needed for durable topic subscriptions on all connections created using this connection factory

 

 

Optional

TargetTransportChain

The name of the protocol that resolves to a group of messaging engines

 

 

Optional

ReadAhead

Read ahead is an optimization that preemptively assigns messages to consumers. This improves the time taken to satisfy consumer requests

AlwaysOn

AlwaysOff

Default

Default

Optional

Target

The name of a target that identifies a group of messaging engines. Specify the type of target using the Target type property

 

 

Optional

TargetType

The type of target named in the Target property

BusMember

Custom

ME

BusMember

Optional

TargetSignificance

This property specifies the significance of the target group

Required

Preferred

Required

Optional

TopicSpace

The name of the topic space that contains the topic, on the service integration bus defined by the Bus name property

 

Default.Topic.Space

Optional

ConsumerDoesNotModifyPayloadAfterGet

When enabled, Object Messages received by a message consuming application that has connected to this connection factory will only have their message data serialized by the system when absolutely necessary. The data obtained from these messages must be treated as readOnly by applications

true

false

false

Optional

ForwarderDoesNotModifyPayloadAfterSet

When enabled, Object/Bytes Messages forwarded through this activation spec that have their payload modified will not have the data copied when it is set into the message and the system will only serialize the message data when absolutely necessary. Applications sending such messages must not modify the data once it has been set into the message.

true

false

false

Optional

Configuring XA connections

In order to permit the recovery of indoubt transactions, all connection factories and activation configurations that specify an XA connection must always connect to a specific messaging engine. A specific messaging engine can be configured as the only suitable target for a connection factory or activation configuration by setting the appropriate connection properties:

 

TargetSignificance = Required

TargetType = ME

Target = <name of messaging engine>

 

If an insufficiently specific set of connection factory or activation configuration properties is configured and an XA connection is requested, an exception is thrown during the connection attempt.

Using SSL

There are two approaches to configuring SSL for the resource adapter: shared approach and private approach. Both methods reply on system properties.

Shared approach

This approach uses JVM wide javax.net.ssl system properties.

 

The minimum javax.net.ssl system properties that need to be configured are:

 

       javax.net.ssl.keyStore   

       javax.net.ssl.keyStorePassword

       javax.net.ssl.trustStore

       javax.net.ssl.trustStorePassword                     

Private approach

This approach allows the configuration of resource adapter specific SSL properties.

 

A system property com.ibm.ws.sib.client.ssl.properties is used to specify the properties file that contains the SSL properties, as shown in the following example:

 

            -Dcom.ibm.ws.sib.client.ssl.properties=c:\ssl.properties

 

If this system property is configured, the resource adapter attempts to load SSL properties from the configured file. If the system property is not configured, the resource adapter attempts to load the file sib.client.ssl.properties from the classpath.

 

The value used for any particular SSL property is obtained by first looking in the loaded SSL properties for com.ibm.*, if no value is found in the loaded SSL properties then a suitable value is looked for in the associated javax.net.ssl.* system properties, finally a default value will be used.

 

The following table shows the SSL property keys that can be configured inside the SSL properties file, the associated backup javax.net.ssl.* system property keys and the defaults.

 

IBM

Sun

Default

com.ibm.ssl.keyStoreType

javax.net.ssl.keyStoreType

JKS

com.ibm.ssl.keyStore

javax.net.ssl.keyStore

 

com.ibm.ssl.keyManager

javax.net.ssl.keyStoreProvider

IbmX509

com.ibm.ssl.trustManager

javax.net.ssl.trustStoreProvider

IbmX509

com.ibm.ssl.keyStorePassword

javax.net.ssl.keyStorePassword

 

com.ibm.ssl.protocol

 

SSL

com.ibm.ssl.contextProvider

 

IBMJSSE2

com.ibm.ws.sib.jsseProvider

 

com.ibm.jsse2.IBMJSSEProvider2

com.ibm.ssl.trustStore

javax.net.ssl.trustStore

 

com.ibm.ssl.trustStoreType

javax.net.ssl.trustStoreType

JKS

com.ibm.ssl.trustStorePassword

javax.net.ssl.trustStorePassword

 

Enabling trace and FFDC

Enabling trace

There are two methods of enabling trace, both of which reply on system properties. These two methods are system property long form and system property short form. The long form takes priority over the short form and uses system properties that are unique to the resource adapter. The short form also uses a system property but, because it is un-qualified, it may clash with other third party technologies running in the same environment.

 

Long form system properties are:

 

Property

Description

com.ibm.ejs.ras.lite.traceSpecification

The trace specification string

com.ibm.ejs.ras.lite.traceFileName

The trace destination (<file>, stdout, stderr, java,util.logging)

com.ibm.ejs.ras.lite.maxFileSize

The maximum trace file size in mb (if the trace destination is a file)

com.ibm.ejs.ras.lite.maxFiles

The maximum number of trace files kept (if the trace destination is a file)

com.ibm.ejs.ras.lite.traceFormat

The trace output format, basic or advanced (the default is basic)

 

An example of long form is:

 

-Dcom.ibm.ejs.ras.lite.traceSpecification=SIB*=all

-Dcom.ibm.ejs.ras.lite.traceFileName=c:\trace.log

-Dcom.ibm.ejs.ras.lite.maxFileSize=20

-Dcom.ibm.ejs.ras.lite.maxFiles=8

 

The short form system property is:

 

traceSettingsFile

 

 which must specify a loadable properties file which can contain the following properties:

 

Property

Description

traceFileName

The trace destination (file, stdout, stderr, java.util.logging)

maxFilesSize

The maximim trace file size in mb (if the trace destination is a file)

maxFiles

The maximum number of trace files kept (if the trace destination is a file)

<traceSpec>

The trace specification

traceFormat

The trace output format, basic or advanced (the default is basic)

 

An example of a short form properties file is:

 

SIBTrm=all:SIBMfp=all

traceFileName=c:\trace.log

 

Note: Some traceFileName property values have special meanings:

 

stdout - means write trace records to stdout

stderr - means write trace records to stderr

java.util.logging - means write trace records to java.util.logging

 

Any other name means write trace records to a file of that name.

Enabling FFDC output

There are two methods of enabling FFDC output, both of which reply on system properties. These two methods are system property long form and system property short form. The long form takes priority over the short form and uses system properties that are unique to the resource adapter.

 

Long form system property:

 

com.ibm.ejs.ras.lite.ffdcLogFile

 

An example of long form is:

 

-Dcom.ibm.ejs.ras.lite.ffdcLogFile=c:\ffdc.log

 

Short form system property:

 

ffdcLogFile

 

An example of short form is:

 

-DffdcLogFile=c:\ffdc.log

Known issues

  • One of more command line messages may be issued during installation:

    Warning: One of the license agreement files is not properly created.

    This message will appear during installation when a Sun JRE which does not have the “Additional languages” feature installed is used. The message does not prevent correct operation of the resource adapter.

 

  • A problem may be encountered if XA connections are configured from the resource adapter to a service integration bus messaging engine that is configured to use a data store. This problem, when encountered will appear as an FFDC from the messaging engine as shown in the following example:

    ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '4765526f00000040020000000000000047544d4944000000000000000000&' to length 254.

    The problem can be avoided by configuring resource adapter XA connections to connect to a service integration bus messaging engine that is configured to use a file store (WebSphere Application Server v6.1).

 

  • A problem may be encountered when a MDB which is configured to listen on a non-durable topic attempts to connect to a messaging engine. This problem, when encountered will appear as an FFDC from the messaging as shown in the following example:

    CWSIP0176E: An asynchronous consumer cannot be registered on destination Default.Topic.Space, messaging engine ABCNode01.server1-Bus1 when the session is started.

    This problem can be avoided by configuring the MDB activation configuration to include the property ReadAhead=AlwaysOff

Technical support

This technology is made available under the IBM International License Agreement for Early Release of Programs (ILAR) and therefore has no warranty. However IBM is interested in receiving feedback resulting from the internal testing and evaluation of the technology and will help resolve problems on an informal basis when we can. Please e-mail: wpm@uk.ibm.com to report problems and other issues.

Further information

For further information on how to configure service integration bus connections, refer to the WebSphere Application Server Information Center:

 

http://www.ibm.com/software/webservers/appserv/was/library/

Trademarks

IBM and WebSphere are trademarks of IBM Corporation.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.

Other company, product and service names may be trademarks or service marks of others.

 

© Copyright IBM Corporation 2007. All Rights Reserved.

US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.