WebLogic JMS のコンフィグレーションと管理
![]() |
![]() |
![]() |
![]() |
JMS リソースは、標準の J2EE モジュールと同様に、デプロイ可能なアプリケーション モジュールとしてコンフィグレーションおよび管理できます。デプロイされた JMS アプリケーション モジュールの所有者は、モジュールをデプロイした管理者ではなく、モジュールを作成およびパッケージ化した開発者となります。したがって、デプロイしたリソースに対しては、管理者の制御が及ぶ範囲がより制限されます。
たとえば、管理者は、デプロイメント時にデプロイメント プラン (JSR-88) を使用して、モジュール内に指定されたリソースの特定のプロパティを修正 (オーバーライド) することはできますが、リソースを動的に追加したり削除したりすることはできません。他の J2EE モジュールのように、アプリケーション モジュールのコンフィグレーションの変更はモジュールのデプロイメント プランに格納され、元のモジュール自体は変更されません。
以下の節では、JMS アプリケーション モジュールをデプロイメントのためにコンフィグレーションする方法について説明します。また、グローバルに使用できるスタンドアロン モジュールや、J2EE アプリケーションでパッケージ化されたモジュールについても説明します。
WebLogic Server 9.0 以降では、JMS リソース用にモジュール形式のデプロイメント モデルをサポートするために、WebLogic JMS リソースの定義に使用する weblogic-jmsmd.xsd
というスキーマが用意されています。JMS モジュール (記述子) を作成する際は、モジュールをこのスキーマに準拠させる必要があります。IDE や他のツールでは、このスキーマに基づいて JMS モジュールを検証できます。
weblogic-jmsmd.xsd
スキーマは、http://www.bea.com/ns/weblogic/91/weblogic-jmsmd.xsd からオンラインで入手できます。
スキーマ内の JMS リソース定義については、『WebLogic Server MBean リファレンス』の「System Module MBeans」フォルダ内の対応するシステム モジュール Bean で説明しています。JMS モジュールのルート Bean は JMSBean で、JMS モジュール全体を表現します。
JMS アプリケーション モジュールは、「パッケージ化された」リソースとしてエンタープライズ アプリケーションの一部にパッケージ化できます。パッケージ化されたモジュールは、EAR または展開された EAR ディレクトリにバンドルされ、weblogic-application.xml
記述子内で参照されます。
パッケージ化された JMS モジュールは、エンタープライズ アプリケーションと一緒にデプロイされます。このモジュールに定義されたリソースは、同梱されたアプリケーションでのみ利用可能 (たとえばアプリケーション スコープのリソース) にすることもできます。このようなモジュールは、JMS リソースを使用する EJB (特に MDB) や Web アプリケーションと一緒にパッケージ化する場合には特に便利です。パッケージ化したモジュールを使用することにより、アプリケーションで必要なリソースを常に使用でき、アプリケーションを新しい環境に移動する処理が簡素化されます。
パッケージ化 JMS モジュールは、エンタープライズ レベルの IDE または XML 記述子ファイルの編集をサポートする他の開発ツールを使用して作成します。スタンドアロンのモジュールをデプロイおよび管理するには、weblogic.Deployer
ユーティリティ、WebLogic Administration Console など、JSR 88 ベースのツールを使用します。
注意 : Administration Console を使用してパッケージ化された JMS モジュールを作成したら、作成された XML
ファイルを別のディレクトリにコピーし、ファイル サフィックスとして「-jms.xml
」を付加してファイル名を変更します。
EAR ファイル内では、JMS モジュールが以下の条件を満たしている必要があります。
-jms.xml
」が付加されている (例 : MyJMSDescriptor-jms.xml
)パッケージ化 JMS モジュールをコンフィグレーションするには、次の手順に従います。
JMS モジュールをエンタープライズ アプリケーションにパッケージ化する際は、該当するすべての J2EE アプリケーション コンポーネントの記述子ファイルで、モジュール内の JMS リソースを参照する必要があります。以下に、該当する記述子ファイルの例を挙げます。
weblogic-application.xml
)weblogic-ejb-jar.xml
、weblogic.xml
など)ejb-jar.xml
) ファイル、WebApp (web.xml
) ファイルなど、すべての J2EE 記述子ファイルエンタープライズ アプリケーションに JMS モジュールを含める際は、アプリケーションと一緒にパッケージ化された weblogic-application.xml
記述子ファイルで、JMS タイプのモジュール要素として各 JMS モジュールを列挙し、J2EE アプリケーションのルートからの相対パスを指定する必要があります。次に、Workflows という JMS モジュールへの参照の例を示します。
<module>
<name>Workflows</name>
<type>JMS</type>
<path>jms/Workflows-jms.xml</path>
</module>
EJB (weblogic-ejb-jar.xml
)、WebApp (weblogic.xml
) など、weblogic-
で始まるすべての記述子ファイルでは、JMS モジュールの名前の後ろにシャープ記号 (#) の区切り文字を付加し、その後ろにモジュール内のリソースの名前を指定します。たとえば、OrderQueue というキューを含む Workflows という JMS モジュールであれば、Workflows#OrderQueue という名前になります。
<resource-env-description>
<resource-env-ref-name>jms/OrderQueue</resource-env-ref-name>
<resource-link>Workflows#OrderQueue</resource-link>
</resource-env-description>
<resource-link>
要素は WebLogic Server 固有の要素で、JMS モジュール内に定義されたリソースを他のさまざまな J2EE アプリケーション コンポーネントから参照 (リンク) するために使用します。
JMS モジュール内に指定された JMS 接続ファクトリ リソースの name
要素は、これを参照する EJB または WebApp アプリケーション記述子ファイルに定義された res-ref-name
要素と一致させる必要があります。res-ref-name
要素により、java:comp/env
で使用するリソース名が、EJB から参照されるモジュールにマップされます。
JMS モジュール内に指定されたキュー送り先リソースおよびトピック送り先リソースの name
要素の場合は、これを参照するモジュール記述子ファイルに定義された res-env-ref
要素と一致させる必要があります。
この名前は、EJB または Web アプリケーション モジュールで参照されるリソースと、JMS モジュールで定義されたリソースをリンクさせるためのものです。次に例を示します。
<resource-ref>
<res-ref-name>jms/OrderQueueFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
</resource-ref>
<resource-env-ref>
<res-env-ref-name>jms/OrderQueue</res-env-ref-name>
<res-env-ref-type>javax.jms.Queue</res-env-ref-type>
</resource-env-ref>
次のコードの抜粋は、パッケージ化 JMS モジュール appscopedejbs-jms.xml
の例です。このモジュールは、図 5-1 のように記述子ファイルで参照されています。
<weblogic-jms xmlns="http://www.bea.com/ns/weblogic/91">
<connection-factory name="ACF">
</connection-factory>
<queue name="AppscopeQueue">
</queue>
</weblogic-jms>
図 5-1 に、パッケージ化 JMS モジュールの JMS 接続ファクトリ リソースとキュー リソースが、EJB EAR ファイルで参照されている様子を示します。
図 5-1 JMS モジュールと EJB アプリケーションの記述子との関係
エンタープライズ アプリケーションに JMS モジュールを含める際は、アプリケーションと一緒にパッケージ化された weblogic-application.xml
記述子ファイルで、JMS タイプのモジュール要素として各 JMS モジュールを列挙し、アプリケーションのルートからの相対パスを指定する必要があります。次に例を示します。
<module>
<name>AppScopedEJBs</name>
<type>JMS</type>
<path>jms/appscopedejbs-jms.xml</path>
</module>
アプリケーション内の EJB で、アプリケーションと一緒にパッケージ化された JMS モジュールを介して接続ファクトリを使用している場合は、JMS モジュールを res-ref
要素として列挙し、EJB と一緒にパッケージ化された ejb-jar.xml
記述子ファイルに res-ref-name
パラメータと res-type
パラメータを含める必要があります。これにより、アプリケーションのローカル コンテキストで、EJB が JMS 接続ファクトリをルックアップできるようになります。次に例を示します。
<resource-ref>
<res-ref-name>jms/QueueFactory</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
</resource-ref>
res-ref-name
要素により、java:comp/env
で使用するリソース名が、EJB から参照されるモジュールにマップされます。res-type
要素には、モジュール タイプ (この例では javax.jms.QueueConnectionFactory
) を指定します。
アプリケーション内の EJB で、アプリケーションと一緒にパッケージ化された JMS モジュールを介してキューまたはトピックを使用している場合は、JMS モジュールを resource-env-ref
要素として列挙し、EJB と一緒にパッケージ化された ejb-jar.xml
記述子ファイルに resource-env-ref-name
パラメータと resource-env-ref-type
パラメータを含める必要があります。これにより、アプリケーションのローカル コンテキストで、EJB が JMS キューまたはトピックをルックアップできるようになります。次に例を示します。
<resource-env-ref>
<resource-env-ref-name>jms/Queue</resource-env-ref-name>
<resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
</resource-env-ref>
resource-env-ref-name
要素により、EJB によって参照されるモジュールに送り先名がマップされます。resource-env-ref-type
要素には、キューの名前 (この例では javax.jms.Queue
) を指定します。
参照される JMS モジュールを res-ref-name
要素として列挙し、EJB と一緒にパッケージ化されている weblogic-ejb-jar.xml
記述子ファイルの resource-link
パラメータに含める必要があります。
<resource-description>
<res-ref-name>jms/QueueFactory</res-ref-name>
<resource-link>AppScopedEJBs#ACF</resource-link>
</resource-description>
res-ref-name
要素により、EJB によって参照されるモジュールに接続ファクトリ名がマップされます。resource-link
要素では、JMS モジュール名の後ろにシャープ記号 (#) の区切り文字を付加し、その後ろにモジュール内のリソースの名前を指定します。この例では、接続ファクトリ ACF を含む JMS モジュール AppScopedEJBs が、AppScopedEJBs#ACF という名前で指定されています。
上の例の続きでは、res-ref-name
要素によって、EJB が参照するモジュールにキュー名もマップされます。その resource-link
要素では、次のようにキュー AppScopedQueue の名前が AppScopedEJBs#AppScopedQueue になります。
<resource-env-description>
<resource-env-ref-name>jms/Queue</resource-env-ref-name>
<resource-link>AppScopedEJBs#AppScopedQueue</resource-link>
</resource-env-description>
JMS モジュールを含むアプリケーションは、他のエンタープライズ アプリケーションと同じようにパッケージ化します。『WebLogic Server アプリケーションの開発』の「wlpackage を使用したアプリケーションのパッケージ化」を参照してください。
パッケージ化 JMS モジュールのデプロイメントは、アプリケーションの他のコンポーネントと同じモデルに従って行われます。個別のモジュールは、単一のサーバ、クラスタ、またはクラスタの個別のメンバーにデプロイできます。
他のアプリケーション コンポーネントの推奨ベスト プラクティスは、java:comp/env
JNDI 環境を使用して JMS エンティティへの参照を取得する方法です。詳細については、「J2EE アプリケーションで JMS リソースを参照する」を参照してください (ただし、このプラクティスは必須ではありません)。
パッケージ化 JMS モジュールは、定義によってエンタープライズ アプリケーションに含まれているため、エンタープライズ アプリケーションをデプロイすると一緒にデプロイされます。パッケージ化 JMS モジュールを含むアプリケーションのデプロイメントの詳細については、『WebLogic Server アプリケーションの開発』の「wldeploy を使用したアプリケーションのデプロイメント」を参照してください。
JMS アプリケーション モジュールは、weblogic.Deployer
ユーティリティまたは Administration Console を使用してスタンドアロンのリソースとしてデプロイでき、通常はデプロイメント プロセスにおいて対象指定されたサーバまたはクラスタで使用できます。この方法でデプロイした JMS モジュールを「スタンドアロン モジュール」といいます。スタンドアロン JMS モジュール内のリソースは、モジュールがどのように対象指定されているかに応じて、クラスタ内でグローバルに使用できるか、サーバ インスタンスでローカルに使用できるかが決まります。
スタンドアロン JMS モジュールを使用すると、JMS リソースの共有と移植が容易になります。作成した JMS モジュールは他の開発者に配布できます。スタンドアロン JMS モジュールも、ドメイン間で JMS 情報を移動するために使用できます。たとえば、JMS を広範囲にわたって手動で再コンフィグレーションすることなく、開発ドメインとプロダクション ドメインの間で JMS 情報を移動できます。
スタンドアロン JMS モジュールは、エンタープライズ レベルの IDE または XML 記述子ファイルの編集をサポートする他の開発ツールを使用して作成できます。スタンドアロンのモジュールをデプロイおよび管理するには、weblogic.Deployer
ユーティリティ、WebLogic Administration Console などの WebLogic Server ツールを使用します。
注意 : Administration Console を使用して JMS アプリケーション モジュールを作成したら、アプリケーションで使用するテンプレートとしてモジュールをコピーし、ファイル サフィックスとして「-jms.xml
」を付加します。また、ネームスペース内での名前の衝突を避けるため、モジュールをアプリケーションと一緒にデプロイする前に、モジュールの Name
要素と JNDI-Name
要素を変更する必要があります。
スタンドアロン JMS モジュールは、以下の条件を満たしている必要があります。
-jms.xml
」が付加されている (例 : MyJMSDescriptor-jms.xml
)スタンドアロン JMS モジュールをコンフィグレーションするには、次の手順に従います。
次のコードの抜粋は、単純なスタンドアロン JMS モジュールの例です。
<weblogic-jms xmlns="http://www.bea.com/ns/weblogic/91">
<connection-factory name="exampleStandAloneCF">
<jndi-name>exampleStandAloneCF</jndi-name>
</connection-factory>
<queue name="ExampleStandAloneQueue">
<jndi-name>exampleStandAloneQueue</jndi-name>
</queue>
</weblogic-jms>
上の例のスタンドアロン JMS モジュールを weblogic.Deployer
ユーティリティを使用してデプロイするコマンドラインは次のようになります。
java weblogic.Deployer -adminurl http://localhost:7001 -user weblogic
-password weblogic \
-name ExampleStandAloneJMS \
-targets examplesServer \
-submoduletargets ExampleStandaloneQueue@examplesJMSServer,ExampleStandaloneCF@examplesServer \
-deploy ExampleStandAloneJMSModule-jms.xml
スタンドアロン JMS モジュールのデプロイの詳細については、「JDBC、JMS、および WLDF アプリケーション モジュールのデプロイ」を参照してください。
スタンドアロン JMS モジュールをデプロイすると、ドメインの config.xml
ファイルに app-deployment
エントリが追加されます。次に例を示します。
<app-deployment>
<name>standalone-examples-jms</name>
<target>MedRecServer</target>
<module-type>jms</module-type>
<source-path>C:\modules\standalone-examples-jms.xml</source-path>
<sub-deployment>
...
</sub-deployment>
<sub-deployment>
...
</sub-deployment>
</app-deployment>
モジュールの source-path
は、絶対パスでも、domain
ディレクトリからの相対パスでも構いません。この点は、domain
\config
ディレクトリからの相対パスで指定するシステム リソース モジュールの descriptor-file-name
パスとは異なります。
スタンドアロン モジュール内にデプロイされた JMS リソースは、バインド可能 (JNDI 名など) または調整可能 (送り先のしきい値など) とみなされるリソースであれば、weblogic.Deployer
ユーティリティまたは Administration Console を使用して再コンフィグレーションできます。ただし、WebLogic JMX API や WebLogic Scripting Tool (WLST) を介してスタンドアロン リソースを使用することはできません。
しかし、WebLogic Server プラグインに付属の基本的な JSR-88 デプロイメント ツールでは、API の WebLogic Server 拡張を使用せずにスタンドアロン JMS モジュールを使用でき、J2EE アプリケーションやモジュールを WebLogic Server にコンフィグレーション、デプロイ、および再デプロイできます。WebLogic Server のデプロイメントの詳細については、「WebLogic Server デプロイメントについて」を参照してください。
また、どの WebLogic Server ユーティリティを使用しても、スタンドアロン リソースを動的に追加または削除することはできません。再デプロイする必要があります。
![]() ![]() |
![]() |
![]() |