Sun GlassFish Enterprise Server 2.1 管理ガイド

外部 JMS プロバイダ

JMS の汎用リソースアダプタは Java EE Connector 1.5 リソースアダプタで、IBM Websphere MQ、Tibco EMS、Sonic MQ などの外部 JMS プロバイダの JMS クライアントライブラリをラップできるため、任意の JMS プロバイダを Java EE アプリケーションサーバーに統合します。アダプタは、Enterprise Server の管理ツールを使用して配備および設定可能な .rar アーカイブです。

JMS の汎用リソースアダプタの設定

Enterprise Server の管理ツールを使用して、JMS の汎用リソースアダプタを配備および設定できます。この節では、Enterprise Server で JMS の汎用リソースアダプタを設定する方法を説明します。

全体として、JMS プロバイダが XA をサポートするかどうかを、リソースアダプタの設定により選択できます。さらに、JMS プロバイダで可能な統合のモードを選択することもできます。リソースアダプタでは、2 つの統合のモードをサポートしています。最初のモードは、統合の手段として JNDI を使用します。この場合、管理対象オブジェクトを JMS プロバイダの JNDI ツリーに設定し、汎用リソースアダプタがそれらを検索し、使用します。このモードが統合に適切でない場合は、JMS 管理対象オブジェクト JavaBean クラスの Java リフレクションを統合のモードとして使用することもできます。

管理コンソールまたはコマンド行を使用して、リソースアダプタを設定できます。これは、他のリソースアダプタの設定と変わりありません。

汎用リソースアダプタの設定

リソースアダプタを配備する前に、Enterprise Server で JMS クライアントライブラリを使用できるようにします。一部の JMS プロバイダでは、クライアントライブラリにネイティブライブラリも含まれている場合があります。このような場合は、これらのネイティブライブラリも JVM から使用できるようにします。

  1. コネクタモジュールを配備する場合と同じように、汎用リソースアダプタを配備します。

  2. コネクタ接続プールを作成します。

  3. コネクタリソースを作成します。

  4. 管理対象オブジェクトリソースを作成します。

  5. Enterprise 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 実装のクラス名。ProviderIntegrationModejavabean の場合に使用します。

QueueConnectionFactoryClassName

アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 

com.sun.messaging.QueueConnectionFactory

なし 

JMS クライアントの javax.jms.QueueConnectionFactory 実装のクラス名。ProviderIntegrationModejavabean の場合に使用します。

TopicConnectionFactoryClassName

アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 

com.sun.messaging.TopicConnectionFactory

なし 

JMS クライアントの javax.jms.TopicConnectionFactory 実装のクラス名。ProviderIntegrationModejavabean と指定されている場合に使用します。

XAConnectionFactoryClassName

アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 

com.sun.messaging.XAConnectionFactory

なし 

JMS クライアントの javax.jms.ConnectionFactory 実装のクラス名。ProviderIntegrationModejavabean と指定されている場合に使用します。

XAQueueConnectionFactoryClassName

アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 

com.sun.messaging.XAQueueConnectionFactory

なし 

JMS クライアントの javax.jms.XAQueueConnectionFactory 実装のクラス名。ProviderIntegrationModejavabean と指定されている場合に使用します。

XATopicConnectionFactoryClassName

アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 

com.sun.messaging.XATopicConnectionFactory

なし 

JMS クライアントの javax.jms.XATopicConnectionFactory 実装のクラス名。ProviderIntegrationModejavabean の場合に使用します。

TopicClassName

アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 

com.sun.messaging.Topic

なし 

JMS クライアントの javax.jms.Topic 実装のクラス名。ProviderIntegrationModejavabean の場合に使用します。

QueueClassName

アプリケーションサーバークラスパスで使用可能なクラス名。たとえば次のようになります。 

com.sun.messaging.Queue

なし 

JMS クライアントの javax.jms.Queue 実装のクラス名ProviderIntegrationModejavabean と指定されている場合に使用します。

SupportsXA

True/false

FALSE

JMS クライアントが XA をサポートするかどうかを指定します。 

ConnectionFactoryProperties

コンマで区切られた名前と値のペア 

なし 

javabean プロパティー名と JMS クライアントの ConnectionFactory の値を指定します。ProviderIntegrationModejavabean である場合にのみ必要です。

JndiProperties

コンマで区切られた名前と値のペア 

なし 

JMS プロバイダの JNDI への接続に使用する JNDI プロバイダのプロパティーを指定します。ProviderIntegrationModejndi である場合にのみ使用します。

CommonSetterMethodName

メソッド名 

なし 

一部の JMS ベンダーが管理対象オブジェクトにプロパティーを設定するために使用する一般的な setter メソッド名を指定します。ProviderIntegrationModejavabean である場合にのみ使用します。Sun Java System Message Queue の場合、このプロパティーの名前は setProperty になります。

UserName

JMS ユーザーの名前 

なし 

JMS プロバイダに接続するためのユーザー名。 

Password

JMS ユーザーのパスワード 

なし 

JMS プロバイダに接続するためのパスワード。 

RMPolicy

ProviderManaged または OnePerPhysicalConnection

ProviderManaged

XAResourceisSameRM メソッドは、トランザクションマネージャーで、2 つの XAResources によって表されたリソースマネージャーインスタンスが同じであるかどうかを判断するために使用されます。RMPolicyProviderManaged (デフォルト値) に設定すると、JMS プロバイダが、汎用リソースアダプタの RMPolicy ラッパーおよび XAResource ラッパーが isSameRM 呼び出しをメッセージキュープロバイダの XA リソースの実装に単に委任するかどうかを JMS プロバイダが決定します。これは、大半のメッセージキュー製品で最適に機能するべきです。

IBM MQ シリーズなどの XAResource の一部の実装では、物理接続ごとに 1 つのリソースマネージャーを使用します。これにより、単一のトランザクションで同じキューマネージャーに対するインバウンド通信とアウトバウンド通信がある (たとえば MDB が送信先に応答を送信するなど) 場合に問題が発生します。RMPolicyOnePerPhysicalConnection に設定されている場合、汎用リソースアダプタの XAResource ラッパーの実装の isSameRM は、ラッパー対象オブジェクトに委任する前に、両方の XAResources が同じ物理接続を使用するかどうかを確認します。

ManagedConnectionFactory プロパティー

ManagedConnectionFactory プロパティーは connector-connection-pool の作成時に指定します。リソースアダプタの作成時に指定されたすべてのプロパティーは、ManagedConnectionFactory でオーバーライドできます。ManagedConnectionFactory でのみ使用可能な追加のプロパティーを次に示します。

プロパティー名

有効な値

デフォルト値

説明

ClientId

有効なクライアント ID 

なし 

JMS 1.1 仕様に指定されている ClientID

ConnectionFactoryJndiName

JNDI 名 

なし 

JMS プロバイダの JNDI ツリーにバインドされた接続ファクトリの JNDI 名。管理者は、JMS プロバイダ自体にすべての接続ファクトリプロパティー (clientID を除く) を指定するようにしてください。このプロパティー名は ProviderIntegrationModejndi の場合にのみ使用されます。

ConnectionValidationEnabled

true/false 

FALSE 

true に設定した場合、リソースアダプタは例外リスナーを使用して、接続の例外をキャッチし、CONNECTION_ERROR_OCCURED イベントをアプリケーションサーバーに送信します。

管理対象オブジェクトリソースのプロパティー

このプロパティーは、管理対象オブジェクトリソースの作成時に指定します。リソースアダプタのすべてのプロパティーは、管理対象リソースオブジェクトでオーバーライドできます。管理対象オブジェクトでのみ使用可能な追加のプロパティーを次に示します。

プロパティー名

有効な値

デフォルト値

説明

DestinationJndiName

JNDI 名 

なし 

JMS プロバイダの JNDI ツリーにバインドされた送信先の JNDI 名。管理者は JMS プロバイダ自体にすべてのプロパティーを指定するようにしてください。このプロパティー名は ProviderIntegrationModejndi の場合にのみ使用されます。

DestinationProperties

コンマで区切られた名前と値のペア 

なし 

JMS クライアントの送信先の javabean プロパティー名と値を指定します。ProviderIntegrationModejavabean である場合にのみ必要です。

有効化仕様プロパティー

このプロパティーは、activation-config-properties として MDB の Sun 固有の配備記述子に指定されています。リソースアダプタのすべてのプロパティーは、有効化仕様でオーバーライドできます。有効化仕様のみで使用できるプロパティーを、次の表に示します。

プロパティー名

有効な値

デフォルト値

説明

MaxPoolSize

整数 

同時メッセージ配信用のリソースアダプタによって、内部で作成されるサーバーセッションプールの最大サイズ。これは MDB オブジェクトの最大プールサイズに等しくなるべきです。 

MaxWaitTime

整数 

リソースアダプタは、その内部プールからサーバーセッションを取得するために、このプロパティーに指定された秒単位の時間を待機します。この制限を超えると、メッセージ配信が失敗します。 

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 名。この接続ファクトリはリソースアダプタが接続を作成し、メッセージを受け取るために使用します。ProviderIntegrationModejndi と設定されている場合にのみ使用します。

DestinationJndiName

有効な JNDI 名 

なし 

JMS プロバイダで作成された送信先の JNDI 名。この送信先は、リソースアダプタが接続を作成し、メッセージを受け取るために使用します。ProviderIntegrationMode が jndi と設定されている場合にのみ使用します。

DestinationType

javax.jms.Queue または javax.jms.Topic

NULL 

MDB が待機する送信先のタイプ。 

DestinationProperties

コンマで区切られた名前と値のペア 

なし 

JMS クライアントの送信先の javabean プロパティー名と値を指定します。ProviderIntegrationModejavabean である場合にのみ必要です。

RedeliveryAttempts

整数 

 

MDB でメッセージによって実行時例外が発生した場合に、メッセージが配信される回数。 

RedeliveryInterval

秒単位での時間 

 

MDB でメッセージによって実行時例外が発生した場合に、配信を繰り返す間隔。 

SendBadMessagesToDMD

true/false 

False 

配信の試行回数を超えた場合に、リソースアダプタがデッドメッセージ送信先にメッセージを送信すべきかどうかを示します。 

DeadMessageDestinationJndiName

有効な JNDI 名。 

なし 

JMS プロバイダによって作成された送信先の JNDI 名。これは、デッドメッセージのターゲット送信先です。これは ProviderIntegrationModejndi の場合にのみ使用します。

DeadMessageDestinationClassName

送信先オブジェクトのクラス名。 

なし 

ProviderIntegrationModejavabean の場合に使用します。

DeadMessageDestinationProperties

コンマで区切られた名前と値のペア 

なし 

JMS クライアントの送信先の javabean プロパティー名と値を指定します。これは ProviderIntegrationModejavabean の場合のみ必要です。

ReconnectAttempts

整数 

 

例外リスナーが接続時のエラーをキャッチした場合に試行される再接続の回数。 

ReconnectInterval

秒単位での時間 

 

再接続の間隔。