ナビゲーションをスキップ

WebLogic JMS のコンフィグレーションと管理

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

JMS アプリケーション モジュールのデプロイメントのコンフィグレーション

JMS リソースは、標準の J2EE モジュールと同様に、デプロイ可能なアプリケーション モジュールとしてコンフィグレーションおよび管理できます。デプロイされた JMS アプリケーション モジュールの所有者は、モジュールをデプロイした管理者ではなく、モジュールを作成およびパッケージ化した開発者となります。したがって、デプロイしたリソースに対しては、管理者の制御が及ぶ範囲がより制限されます。

たとえば、管理者は、デプロイメント時にデプロイメント プラン (JSR-88) を使用して、モジュール内に指定されたリソースの特定のプロパティを修正 (オーバーライド) することはできますが、リソースを動的に追加したり削除したりすることはできません。他の J2EE モジュールのように、アプリケーション モジュールのコンフィグレーションの変更はモジュールのデプロイメント プランに格納され、元のモジュール自体は変更されません。

以下の節では、JMS アプリケーション モジュールをデプロイメントのためにコンフィグレーションする方法について説明します。また、グローバルに使用できるスタンドアロン モジュールや、J2EE アプリケーションでパッケージ化されたモジュールについても説明します。

 


JMS スキーマ

WebLogic Server 9.0 で JMS リソース用に新しいモジュール形式のデプロイメント モデルをサポートするにあたり、WebLogic JMS リソースの定義に使用する weblogic-jmsmd.xsd というスキーマを用意しました。JMS モジュール (記述子) を作成する際は、モジュールをこのスキーマに準拠させる必要があります。IDE や他のツールでは、このスキーマに基づいて JMS モジュールを検証できます。

weblogic-jmsmd.xsd スキーマは、http://www.bea.com/ns/weblogic/90/weblogic-jmsmd.xsd からオンラインで入手できます。

スキーマ内の JMS リソース定義については、『WebLogic Server MBean リファレンス』の「System Module MBeans」フォルダ内の対応するシステム モジュール Bean で説明しています。JMS モジュールのルート Bean は JMSBean で、JMS モジュール全体を表現します。

 


エンタープライズ アプリケーションにパッケージ化された JMS モジュールのデプロイメント

JMS アプリケーション モジュールは、「パッケージ化された」リソースとしてエンタープライズ アプリケーションの一部にパッケージ化できます。パッケージ化されたモジュールは、EAR または展開された EAR ディレクトリにバンドルされ、weblogic-application.xml 記述子内で参照されます。

パッケージ化された JMS モジュールは、エンタープライズ アプリケーションと一緒にデプロイされます。このモジュールに定義されたリソースは、同梱されたアプリケーションでのみ利用可能 (たとえばアプリケーション スコープのリソース) にすることもできます。このようなモジュールは、JMS リソースを使用する EJB (特に MDB) や Web アプリケーションと一緒にパッケージ化する場合には特に便利です。パッケージ化したモジュールを使用することにより、アプリケーションで必要なリソースを常に使用でき、アプリケーションを新しい環境に移動する処理が簡素化されます。

パッケージ化 JMS モジュールの作成

パッケージ化 JMS モジュールは、エンタープライズ レベルの IDE または XML 記述子ファイルの編集をサポートする他の開発ツールを使用して作成します。スタンドアロンのモジュールをデプロイおよび管理するには、weblogic.Deployer ユーティリティ、WebLogic Administration Console など、JSR 88 ベースのツールを使用します。

注意 : Administration Console を使用してパッケージ化された JMS モジュールを作成したら、作成された XML ファイルを別のディレクトリにコピーし、ファイル サフィックスとして「-jms.xml」を付加してファイル名を変更します。

JMS パッケージ化モジュールの要件

EAR ファイル内では、JMS モジュールが以下の条件を満たしている必要があります。

パッケージ化 JMS モジュールの作成手順

パッケージ化 JMS モジュールをコンフィグレーションするには、次の手順に従います。

  1. 必要な場合は、JMS モジュールを対象指定する JMS サーバを作成します。Administration Console オンライン ヘルプの「JMS サーバのコンフィグレーション」を参照してください。
  2. JMS システム モジュールを作成し、必要なリソース (キュー、トピックなど) をコンフィグレーションします。Administration Console オンライン ヘルプの「JMS システム モジュールのコンフィグレーションおよび JMS リソースの追加」を参照してください。
  3. システム モジュールは、ドメイン ディレクトリの config\jms サブディレクトリに、サフィックス「-jms.xml」で保存されます。
  4. システム モジュールを新しい場所にコピーしてから以下を行います。
    1. モジュールの名前を、ドメイン ネームスペース内でユニークな名前に変更します。
    2. JNDI-Name 属性を削除して、そのアプリケーションでのみ使用できるアプリケーション スコープのモジュールにします。
  5. モジュール内の JMS リソースへの参照を、該当するすべての J2EE アプリケーション コンポーネントの記述子ファイルに追加します。「デプロイメント記述子ファイルでのパッケージ化 JMS モジュールの参照」を参照してください。
  6. EAR 内のすべてのアプリケーション モジュールをパッケージ化します。「エンタープライズ アプリケーションと JMS モジュールのパッケージ化」を参照してください。
  7. EAR をデプロイします。「パッケージ化 JMS モジュールのデプロイ」を参照してください。

デプロイメント記述子ファイルでのパッケージ化 JMS モジュールの参照

JMS モジュールをエンタープライズ アプリケーションにパッケージ化する際は、該当するすべての J2EE アプリケーション コンポーネントの記述子ファイルで、モジュール内の JMS リソースを参照する必要があります。以下に、該当する記述子ファイルの例を挙げます。

weblogic-application.xml 記述子での JMS モジュールの参照

エンタープライズ アプリケーションに JMS モジュールを含める際は、アプリケーションと一緒にパッケージ化された weblogic-application.xml 記述子ファイルで、JMS タイプのモジュール要素として各 JMS モジュールを列挙し、J2EE アプリケーションのルートからの相対パスを指定する必要があります。次に、Workflows という JMS モジュールへの参照の例を示します。

<module>
<name>Workflows</name>
<type>JMS</type>
<path>jms/Workflows-jms.xml</path>
</module>

WebLogic アプリケーションでの JMS リソースの参照

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 アプリケーション コンポーネントから参照 (リンク) するために使用します。

J2EE アプリケーションでの JMS リソースの参照

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>

EJB アプリケーションのパッケージ化 JMS モジュールのサンプル

次のコードの抜粋は、パッケージ化 JMS モジュール appscopedejbs-jms.xml の例です。このモジュールは、図 5-1 のように記述子ファイルで参照されています。

<weblogic-jms xmlns="http://www.bea.com/ns/weblogic/90">
<connection-factory name="ACF">
</connection-factory>
<queue name="AppscopeQueue">
</queue>
</weblogic-jms>

図 5-1 に、パッケージ化 JMS モジュールの JMS 接続ファクトリ リソースとキュー リソースが、EJB EAR ファイルで参照されている様子を示します。

図 5-1 JMS モジュールと EJB アプリケーションの記述子との関係

JMS モジュールと EJB アプリケーションの記述子との関係


 

weblogic-application.xml でのパッケージ化 JMS モジュールの参照

エンタープライズ アプリケーションに JMS モジュールを含める際は、アプリケーションと一緒にパッケージ化された weblogic-application.xml 記述子ファイルで、JMS タイプのモジュール要素として各 JMS モジュールを列挙し、アプリケーションのルートからの相対パスを指定する必要があります。次に例を示します。

<module>
<name>AppScopedEJBs</name>
<type>JMS</type>
<path>jms/appscopedejbs-jms.xml</path>
</module>

ejb-jar.xml でのパッケージ化 JMS モジュールの参照

アプリケーション内の 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) を指定します。

weblogic-ejb-jar.xml でのパッケージ化 JMS モジュールの参照

参照される 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 モジュールのパッケージ化

JMS モジュールを含むアプリケーションは、他のエンタープライズ アプリケーションと同じようにパッケージ化します。『WebLogic Server アプリケーションの開発』の「wlpackage を使用したアプリケーションのパッケージ化」を参照してください。

パッケージ化 JMS モジュールのデプロイ

パッケージ化 JMS モジュールのデプロイメントは、アプリケーションの他のコンポーネントと同じモデルに従って行われます。個別のモジュールは、単一のサーバ、クラスタ、またはクラスタの個別のメンバーにデプロイできます。

他のアプリケーション コンポーネントの推奨ベスト プラクティスは、java:comp/env JNDI 環境を使用して JMS エンティティへの参照を取得する方法です。詳細については、「J2EE アプリケーションでの JMS リソースの参照」を参照してください (ただし、このプラクティスは必須ではありません)。

パッケージ化 JMS モジュールは、定義によってエンタープライズ アプリケーションに含まれているため、エンタープライズ アプリケーションをデプロイすると一緒にデプロイされます。パッケージ化 JMS モジュールを含むアプリケーションのデプロイメントの詳細については、『WebLogic Server アプリケーションの開発』の「wldeploy を使用したアプリケーションのデプロイメント」を参照してください。

 


スタンドアロン JMS モジュールのデプロイ

JMS アプリケーション モジュールは、weblogic.Deployer ユーティリティまたは Administration Console を使用してスタンドアロンのリソースとしてデプロイでき、通常はデプロイメント プロセスにおいて対象指定されたサーバまたはクラスタで使用できます。この方法でデプロイした JMS モジュールを「スタンドアロン モジュール」といいます。スタンドアロン 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 モジュールは、以下の条件を満たしている必要があります。

スタンドアロン JMS モジュールの作成手順

スタンドアロン JMS モジュールをコンフィグレーションするには、次の手順に従います。

  1. 必要な場合は、JMS モジュールを対象指定する JMS サーバを作成します。Administration Console オンライン ヘルプの「JMS サーバのコンフィグレーション」を参照してください。
  2. JMS システム モジュールを作成し、必要なリソース (キュー、トピックなど) をコンフィグレーションします。Administration Console オンライン ヘルプの「JMS システム モジュールのコンフィグレーションおよび JMS リソースの追加」を参照してください。
  3. システム モジュールは、ドメイン ディレクトリの config\jms サブディレクトリに、サフィックス「-jms.xml」で保存されます。
  4. システム モジュールを新しい場所にコピーしてから以下を行います。
    1. モジュールの名前を、ドメイン ネームスペース内でユニークな名前に変更します。
    2. モジュールをグローバルに使用できるようにするには、モジュール内のリソースの JNDI-Name 属性をユニークな名前に変更します。
    3. 必要に応じて、他の調整可能な値を修正します。送り先のしきい値、接続ファクトリのフロー コントロールなどのパラメータを調整できます。
  5. モジュールをデプロイします。「スタンドアロン JMS モジュールのデプロイ」を参照してください。

単純なスタンドアロン JMS モジュールのサンプル

次のコードの抜粋は、単純なスタンドアロン JMS モジュールの例です。

<weblogic-jms xmlns="http://www.bea.com/ns/weblogic/90">
<connection-factory name="exampleStandAloneCF">
<jndi-name>exampleStandAloneCF</jndi-name>
</connection-factory>
<queue name="ExampleStandAloneQueue">
<jndi-name>exampleStandAloneQueue</jndi-name>
</queue>
</weblogic-jms>

スタンドアロン 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 モジュールのデプロイの詳細については、「Deploying JDBC and JMS Application Modules」を参照してください。

スタンドアロン 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 モジュールのチューニング

スタンドアロン モジュール内にデプロイされた 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 のデプロイメントの詳細については、「Understanding WebLogic Server Deployment」を参照してください。

また、どの WebLogic Server ユーティリティを使用しても、スタンドアロン リソースを動的に追加または削除することはできません。再デプロイする必要があります。

 

フッタのナビゲーションのスキップ  ページの先頭 前 次