JMS の汎用リソースアダプタは Java EE Connector 1.5 リソースアダプタで、IBM Websphere MQ、Tibco EMS、Sonic MQ などの外部 JMS プロバイダの JMS クライアントライブラリをラップできるため、任意の JMS プロバイダを Java EE アプリケーションサーバーに統合します。アダプタは、Communications Server の管理ツールを使用して配備および設定可能な .rar アーカイブです。
Communications Server の管理ツールを使用して、JMS の汎用リソースアダプタを配備および設定できます。この節では、Communications Server で JMS の汎用リソースアダプタを設定する方法を説明します。
全体として、JMS プロバイダが XA をサポートするかどうかを、リソースアダプタの設定により選択できます。さらに、JMS プロバイダで可能な統合のモードを選択することもできます。リソースアダプタでは、2 つの統合のモードをサポートしています。最初のモードは、統合の手段として JNDI を使用します。この場合、管理対象オブジェクトを JMS プロバイダの JNDI ツリーに設定し、汎用リソースアダプタがそれらを検索し、使用します。このモードが統合に適切でない場合は、JMS 管理対象オブジェクト JavaBean クラスの Java リフレクションを統合のモードとして使用することもできます。
管理コンソールまたはコマンド行を使用して、リソースアダプタを設定できます。これは、他のリソースアダプタの設定と変わりありません。
リソースアダプタを配備する前に、Communications Server で JMS クライアントライブラリを使用できるようにします。一部の JMS プロバイダでは、クライアントライブラリにネイティブライブラリも含まれている場合があります。このような場合は、これらのネイティブライブラリも JVM から使用できるようにします。
コネクタモジュールを配備する場合と同じように、汎用リソースアダプタを配備します。
コネクタ接続プールを作成します。
コネクタリソースを作成します。
管理対象オブジェクトリソースを作成します。
Communications Server のセキュリティーポリシーを次のように変更します。
sjsas_home/domains/domain1/config/server.policy を変更して、java.util.logging.LoggingPermission "control" を追加します。
sjsas_home/lib/appclient/client.policy を変更して、permission javax.security.auth.PrivateCredentialPermission "javax.resource.spi.security.PasswordCredential ^ \"^\"","read": を追加します。
次の表に、リソースアダプタの作成時に使用するプロパティーを示します。
プロパティー名 |
有効な値 |
デフォルト値 |
説明 |
---|---|---|---|
ProviderIntegrationMode |
javabean/jndi |
javabean |
リソースアダプタと JMS クライアントの統合のモードを指定します。 |
ConnectionFactoryClassName |
アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 com.sun.messaging.ConnectionFactory |
なし |
JMS クライアントの javax.jms.ConnectionFactory 実装のクラス名。ProviderIntegrationMode が javabean の場合に使用します。 |
QueueConnectionFactoryClassName |
アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 com.sun.messaging.QueueConnectionFactory |
なし |
JMS クライアントの javax.jms.QueueConnectionFactory 実装のクラス名。ProviderIntegrationMode が javabean の場合に使用します。 |
TopicConnectionFactoryClassName |
アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 com.sun.messaging.TopicConnectionFactory |
なし |
JMS クライアントの javax.jms.TopicConnectionFactory 実装のクラス名。ProviderIntegrationMode が javabean と指定されている場合に使用します。 |
XAConnectionFactoryClassName |
アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 com.sun.messaging.XAConnectionFactory |
なし |
JMS クライアントの javax.jms.ConnectionFactory 実装のクラス名。ProviderIntegrationMode が javabean と指定されている場合に使用します。 |
XAQueueConnectionFactoryClassName |
アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 com.sun.messaging.XAQueueConnectionFactory |
なし |
JMS クライアントの javax.jms.XAQueueConnectionFactory 実装のクラス名。ProviderIntegrationMode が javabean と指定されている場合に使用します。 |
XATopicConnectionFactoryClassName |
アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 com.sun.messaging.XATopicConnectionFactory |
なし |
JMS クライアントの javax.jms.XATopicConnectionFactory 実装のクラス名。ProviderIntegrationMode が javabean の場合に使用します。 |
TopicClassName |
アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 com.sun.messaging.Topic |
なし |
JMS クライアントの javax.jms.Topic 実装のクラス名。ProviderIntegrationMode が javabean の場合に使用します。 |
QueueClassName |
アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 com.sun.messaging.Queue |
なし |
JMS クライアントの javax.jms.Queue 実装のクラス名ProviderIntegrationMode が javabean と指定されている場合に使用します。 |
SupportsXA |
True/false |
FALSE |
JMS クライアントが XA をサポートするかどうかを指定します。 |
ConnectionFactoryProperties |
コンマで区切られた名前と値のペア |
なし |
javabean プロパティー名と JMS クライアントの ConnectionFactory の値を指定します。ProviderIntegrationMode が javabean である場合にのみ必要です。 |
JndiProperties |
コンマで区切られた名前と値のペア |
なし |
JMS プロバイダの JNDI への接続に使用する JNDI プロバイダのプロパティーを指定します。ProviderIntegrationMode が jndi である場合にのみ使用します。 |
CommonSetterMethodName |
メソッド名 |
なし |
一部の JMS ベンダーが管理対象オブジェクトにプロパティーを設定するために使用する一般的な setter メソッド名を指定します。ProviderIntegrationMode が javabean である場合にのみ使用します。Sun Java System Message Queue の場合、このプロパティーの名前は setProperty になります。 |
UserName |
JMS ユーザーの名前 |
なし |
JMS プロバイダに接続するためのユーザー名。 |
Password |
JMS ユーザーのパスワード |
なし |
JMS プロバイダに接続するためのパスワード。 |
RMPolicy |
ProviderManaged または OnePerPhysicalConnection |
ProviderManaged |
XAResource の isSameRM メソッドは、トランザクションマネージャーで、2 つの XAResources によって表されたリソースマネージャーインスタンスが同じであるかどうかを判断するために使用されます。RMPolicy を ProviderManaged (デフォルト値) に設定すると、JMS プロバイダが、汎用リソースアダプタの RMPolicy ラッパーおよび XAResource ラッパーが isSameRM 呼び出しをメッセージキュープロバイダの XA リソースの実装に単に委任するかどうかを JMS プロバイダが決定します。これは、大半のメッセージキュー製品で最適に機能するべきです。 IBM MQ シリーズなどの XAResource の一部の実装では、物理接続ごとに 1 つのリソースマネージャーを使用します。これにより、単一のトランザクションで同じキューマネージャーに対するインバウンド通信とアウトバウンド通信がある (たとえば MDB が送信先に応答を送信するなど) 場合に問題が発生します。RMPolicy が OnePerPhysicalConnection に設定されている場合、汎用リソースアダプタの XAResource ラッパーの実装の isSameRM は、ラッパー対象オブジェクトに委任する前に、両方の XAResources が同じ物理接続を使用するかどうかを確認します。 |
ManagedConnectionFactory プロパティーは connector-connection-pool の作成時に指定します。リソースアダプタの作成時に指定されたすべてのプロパティーは、ManagedConnectionFactory でオーバーライドできます。ManagedConnectionFactory でのみ使用可能な追加のプロパティーを次に示します。
プロパティー名 |
有効な値 |
デフォルト値 |
説明 |
---|---|---|---|
ClientId |
有効なクライアント ID |
なし |
JMS 1.1 仕様に指定されている ClientID |
ConnectionFactoryJndiName |
JNDI 名 |
なし |
JMS プロバイダの JNDI ツリーにバインドされた接続ファクトリの JNDI 名。管理者は、JMS プロバイダ自体にすべての接続ファクトリプロパティー (clientID を除く) を指定するようにしてください。このプロパティー名は ProviderIntegrationMode が jndi の場合にのみ使用されます。 |
ConnectionValidationEnabled |
true/false |
FALSE |
true に設定した場合、リソースアダプタは例外リスナーを使用して、接続の例外をキャッチし、CONNECTION_ERROR_OCCURED イベントをアプリケーションサーバーに送信します。 |
このプロパティーは、管理対象オブジェクトリソースの作成時に指定します。リソースアダプタのすべてのプロパティーは、管理対象リソースオブジェクトでオーバーライドできます。管理対象オブジェクトでのみ使用可能な追加のプロパティーを次に示します。
プロパティー名 |
有効な値 |
デフォルト値 |
説明 |
---|---|---|---|
DestinationJndiName |
JNDI 名 |
なし |
JMS プロバイダの JNDI ツリーにバインドされた送信先の JNDI 名。管理者は JMS プロバイダ自体にすべてのプロパティーを指定するようにしてください。このプロパティー名は ProviderIntegrationMode が jndi の場合にのみ使用されます。 |
DestinationProperties |
コンマで区切られた名前と値のペア |
なし |
JMS クライアントの送信先の javabean プロパティー名と値を指定します。ProviderIntegrationMode が javabean である場合にのみ必要です。 |
このプロパティーは、activation-config-properties として MDB の Sun 固有の配備記述子に指定されています。リソースアダプタのすべてのプロパティーは、有効化仕様でオーバーライドできます。有効化仕様のみで使用できるプロパティーを、次の表に示します。
プロパティー名 |
有効な値 |
デフォルト値 |
説明 |
---|---|---|---|
MaxPoolSize |
整数 |
8 |
同時メッセージ配信用のリソースアダプタによって、内部で作成されるサーバーセッションプールの最大サイズ。これは MDB オブジェクトの最大プールサイズに等しくなるべきです。 |
MaxWaitTime |
整数 |
3 |
リソースアダプタは、その内部プールからサーバーセッションを取得するために、このプロパティーに指定された秒単位の時間を待機します。この制限を超えると、メッセージ配信が失敗します。 |
SubscriptionDurability |
持続性または非持続性 |
非持続性 |
JMS 1.1 仕様に指定されている SubscriptionDurability |
SubscriptionName |
なし |
JMS 1.1 仕様に指定されている SubscriptionName |
|
MessageSelector |
有効なメッセージセレクタ |
なし |
JMS 1.1 仕様に指定されている MessageSelector |
ClientID |
有効なクライアント ID |
なし |
JMS 1.1 仕様に指定されている ClientID |
ConnectionFactoryJndiName |
有効な JNDI 名 |
なし |
JMS プロバイダで作成された接続ファクトリの JNDI 名。この接続ファクトリはリソースアダプタが接続を作成し、メッセージを受け取るために使用します。ProviderIntegrationMode が jndi と設定されている場合にのみ使用します。 |
DestinationJndiName |
有効な JNDI 名 |
なし |
JMS プロバイダで作成された送信先の JNDI 名。この送信先は、リソースアダプタが接続を作成し、メッセージを受け取るために使用します。ProviderIntegrationMode が jndi と設定されている場合にのみ使用します。 |
DestinationType |
javax.jms.Queue または javax.jms.Topic |
NULL |
MDB が待機する送信先のタイプ。 |
DestinationProperties |
コンマで区切られた名前と値のペア |
なし |
JMS クライアントの送信先の javabean プロパティー名と値を指定します。ProviderIntegrationMode が javabean である場合にのみ必要です。 |
RedeliveryAttempts |
整数 |
MDB でメッセージによって実行時例外が発生した場合に、メッセージが配信される回数。 |
|
RedeliveryInterval |
秒単位での時間 |
MDB でメッセージによって実行時例外が発生した場合に、配信を繰り返す間隔。 |
|
SendBadMessagesToDMD |
true/false |
False |
配信の試行回数を超えた場合に、リソースアダプタがデッドメッセージ送信先にメッセージを送信すべきかどうかを示します。 |
DeadMessageDestinationJndiName |
有効な JNDI 名。 |
なし |
JMS プロバイダによって作成された送信先の JNDI 名。これは、デッドメッセージのターゲット送信先です。これは ProviderIntegrationMode が jndi の場合にのみ使用します。 |
DeadMessageDestinationClassName |
送信先オブジェクトのクラス名。 |
なし |
ProviderIntegrationMode が javabean の場合に使用します。 |
DeadMessageDestinationProperties |
コンマで区切られた名前と値のペア |
なし |
JMS クライアントの送信先の javabean プロパティー名と値を指定します。これは ProviderIntegrationMode が javabean の場合のみ必要です。 |
ReconnectAttempts |
整数 |
例外リスナーが接続時のエラーをキャッチした場合に試行される再接続の回数。 |
|
ReconnectInterval |
秒単位での時間 |
再接続の間隔。 |