プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JMSリソースの管理
12c (12.2.1.2.0)
E82889-02
目次へ移動
目次

前
次

10 JMS初級ユーザーおよび上級ユーザーのベスト・プラクティス

この章では、JMS初級ユーザーと上級ユーザーのためのアドバイスおよびベスト・プラクティスを示します。WebLogic Server 12.1.3のターゲット設定、統合オプション、URLの概要、高可用性(HA)およびチューニングについて説明します。

この章の内容は次のとおりです。

構成のベスト・プラクティス

次の項では、JMSアプリケーションの構成方法に関する基本手順の概要を示します。

  1. JMSサーバーと永続ストアの構成

  2. JMSモジュールの構成

  3. JMSリソースの構成

  4. SAFエージェント、ストア、インポート宛先の構成

JMSサーバーと永続ストアの構成

JMSサーバーと永続ストアを構成する前に、次の内容を検討します。

  • 宛先、接続ファクトリ、およびその他のJMSリソースが、そのホストJMSサーバーおよび永続ストアとは別に構成されています。JMSリソースを構成するベスト・プラクティスの手順については後ほど説明します。

  • WebLogic分散宛先を利用する場合、WebLogicクラスタを、そのクラスタの各WebLogicサーバーのJMSサーバーとカスタム永続ストアで構成する必要があります。WebLogic JMS分散宛先が機能するには、WebLogicクラスタが機能している必要があります。

  • クラスタ化されたJMSサーバーは、すべてのWebLogic JMS機能(順序単位、シングルトン宛先、ストア・アンド・フォワード・エージェントなど)をサポートするわけではありませんが、簡略化された構成と、リソースの規模の動的変更を可能にします。「簡略化されたJMSクラスタと高可用性の構成」を参照してください

  • 移行可能ターゲットのみがクラスタでサポートされます。クラスタを使用していない場合、サイズ1のクラスタを再検討して使用できます。これにより、移行可能ターゲットを使用できます。移行可能ターゲットを使用すると、次に示すように便利な再起動インプレース機能が有効になります。また、単一サーバーから複数サーバーへの拡張プロセスが容易になるため、アプリケーションの将来保証にも役立ちます。

注意:

高可用性については、移行可能なターゲットを使用するかわりに、適切な高可用性構成設定とともにJMSアーティファクトにクラスタをターゲットとして指定することをお薦めします。

構成済クラスタにJMSサーバーと永続ストアを構成するには、次の手順を実行します。

  1. JMSサーバーをホストする各WebLogicサーバーでカスタム・ストアを作成します。WebLogicサーバーにすでにカスタム・ストアがある場合、サービスでストアを共有すると、通常は利便性とパフォーマンスが向上するため、この手順をスキップできます。(カスタム・ストアを使用する理由は何でしょうか。カスタム・ストアにより、チューニングと管理の柔軟性が高まります。また、デフォルト・ファイル・ストアは移行できません。
  2. 各ストアをクラスタに割り当てます。クラスタを使用しない場合、各ストアをそのホスト・サーバーに直接ターゲット指定します。

    移行可能なターゲットを使用するかわりに、クラスタをターゲットとして指定されたJMSアーティファクトを、高可用性設定で使用することをお薦めします。「簡略化されたJMSクラスタと高可用性の構成」を参照してください

  3. 各WebLogicサーバーでJMSサーバーを構成します。ステップ1で作成されたストアを参照するようにJMSサーバーを構成します。ストアに使用されたターゲットにJMSサーバーをターゲット指定します。複数のJMSサーバーで同じストアを参照できます。
  4. 各JMSサーバーでメッセージ数の割当てを構成します。デフォルトの割当てがないため、割当てを構成すると、メモリー不足状況の防止に役立ちます。経験則によれば、従来、各メッセージはページ・アウトする場合でも512バイトのメモリーを消費すると仮定されます。
  5. JMSページングはデフォルトで有効ですが、デフォルトの動作が環境に対して有効であることを確認します。

JMSモジュールの構成

同種のJMSサーバーのセットは、分散ポリシーが「Distributed」に設定された、クラスタをターゲットとして指定された単一JMSサーバーか、それぞれが同じ分散宛先をホストするように同様に構成されたJMSサーバーのセットになります。同種のJMSサーバーごとに、JMSモジュールと単一の関連サブデプロイメントを構成します。

  1. システム・モジュールを作成します。そのモジュールを、単一クラスタ(クラスタを使用する場合)または単一WebLogicサーバー・インスタンスにターゲット指定します。サブデプロイメントを利用する場合も常にモジュールをターゲット指定する必要があります。

    注意:

    • ほとんどの場合、デプロイ可能なアプリケーション・モジュールではなく、システム・モジュールを常に使用することをお薦めします。システム・モジュールは、WebLogic Server管理コンソール、JMX API (Java MBean)、またはWLSTを使用して作成できますが、デプロイ可能なモジュール用の同等のツールはありません。デプロイ可能なモジュールを変更するには、XMLを手動で編集して再デプロイするしかありません。

    • JMSリソース定義でなくシステム・モジュール構成を常に使用することをお薦めします。システム・モジュールを使用した接続ファクトリおよび宛先の構成は、通常、アプリケーションにハード・コードされた構成よりずっと柔軟で保守性がよく、移植も容易です。

  2. モジュールにつき厳密に1つのサブデプロイメントを作成します。サブデプロイメントは、WebLogic Server管理コンソールでは「高度なターゲット指定」と呼ばれる場合もあります。1つのサブデプロイメントにより、簡単になります。つまり、サード・パーティによるターゲット指定が理解しやすくなり、構成エラーが生じる可能性が少なくなります。1つのサブデプロイメントで十分でない場合は2つのモジュールを作成します。
  3. サブデプロイメントはJMSサーバー(WebLogicサーバーではない)にのみ移入します。宛先をホストするJMSサーバーのみになります。これにより、JMSリソースを構成する際に、リソースが正しいJMSサーバーにターゲット指定されます。
    .非分散宛先をサポートするモジュールの場合、サブデプロイメントは単一のJMSサーバーのみを参照する必要があります。分散宛先と非分散宛先が混在している場合は、2つのモジュール(それぞれに各自のサブデプロイメントが含まれる)を使用します
    分散宛先を持つサブデプロイメントをサポートするモジュールの場合は、分散ポリシーが「Distributed」に設定されている、クラスタをターゲットとして指定された単一JMSサーバーを常に選択してください。
    分散宛先と非分散宛先が混在している場合、2つのモジュール(それぞれに各自のサブデプロイメントが含まれる)を使用します。

JMSリソースの構成

JMSリソースを構成し、そのリソースを適切にターゲット指定します。

  1. 宛先を作成し、その宛先を1つのサブデプロイメント(コンソールでは「高度なターゲット指定」と呼ばれる)にターゲット指定します。複数のJMSサーバーに解決するサブデプロイメント・ターゲットにターゲット指定できるのは分散宛先のみです。分散宛先、スタンドアロン宛先、インポート宛先が混在している場合は、2つのモジュール(それぞれに各自のサブデプロイメントが含まれる)を使用します。「ターゲット指定のベスト・プラクティス」を参照してください
  2. カスタム接続ファクトリを作成し、デフォルト接続ファクトリのかわりに使用します。デフォルト接続ファクトリは調整できません。

    ほとんどの場合、デフォルトのターゲット指定ではリソースがモジュールのターゲットを継承するため、デフォルトのターゲット指定と接続ファクトリを一緒に使用できます。リモート・クライアントでのみ使用される接続ファクトリの場合、モジュールのサブデプロイメント・ターゲットを使用します。

  3. 接続ファクトリのマップされないリソース参照のモードを、デフォルト値「ReturnDefault」のままにしておくのではなく、「FailSafe」に設定します。値を「FailSafe」にすると、アプリケーションはマップされないリソース参照を確実に使用しません。詳細は、Oracle WebLogic Serverリリース・ノートのマップされない接続ファクトリ・リソースの動作変更を参照してください。
    マップされないリソース参照モードの設定の詳細は、「接続ファクトリのマップされないリソース参照モードの指定」を参照してください。

SAFエージェント、ストア、インポート宛先の構成

SAFエージェントとそのストア、およびそのインポート宛先は、JMSサーバーとそのストア、およびJMS宛先と同じベスト・プラクティスに従う必要があります。SAFエージェントは移行可能ターゲットを使用できないため、クラスタでSAFエージェントをターゲット指定しないでください。

ターゲット指定のベスト・プラクティス

JMSリソースには次のターゲット指定のガイドラインをお薦めします。

  • デフォルトのターゲット指定、WebLogicサーバーのターゲット指定、宛先を含むクラスタのターゲット指定は避けてください。宛先には高度なターゲット指定(サブデプロイメントのターゲット指定)を使用し、サブデプロイメントがJMSサーバーまたはSAFエージェントのみを参照するようにします。これは、非分散宛先、分散宛先、インポート宛先を含むすべての宛先タイプに適用されます。

    ドメインの現在のJMSサーバーまたはSAFエージェントのみが特定のアプリケーションに使用される場合でも、次の理由によりこれがベスト・プラクティスとなります。

    • 現在のアプリケーションに関連しない新しいJMSサーバーまたはSAFエージェントは、他のアプリケーション、Webサービス、またはサード・パーティ製品で導入できます。

    • 今後、アプリケーションでは、スケーラビリティや管理上の目的で異なる宛先や異なるJMSサーバーまたはSAFエージェントが必要になります。

  • Webサービス・デプロイメントおよびエラー・キューを構成する場合は常に高度なターゲット指定を使用します。これは、開発環境と本番環境のどちらも該当します。

  • 分散キュー内でエラー宛先を使用するには、その親の宛先と同じサブデプロイメントにエラー宛先をターゲット指定する必要があります。

  • ほとんどの場合、デフォルトのターゲット指定ではリソースがモジュールのターゲットを継承するため、デフォルトのターゲット指定と接続ファクトリを一緒に使用できます。リモート・クライアントでのみ使用される接続ファクトリの場合、モジュールのサブデプロイメント・ターゲットを使用します。

  • クラスタ化されたJMSサーバーは、すべてのWebLogic JMS機能(順序単位、シングルトン宛先、ストア・アンド・フォワード・エージェントなど)をサポートするわけではありませんが、構成を簡略化し、WebLogicメッセージング・リソースの規模をアプリケーションで容易に変更できるようにするために、その使用を検討してください。「簡略化されたJMSクラスタ構成」を参照してください

統合およびマルチドメインのベスト・プラクティス

次の項では、WebLogic Serverを使用する統合環境とマルチドメイン環境のベスト・プラクティス情報を示します。

  • リモートWebLogicクラスタまたはサーバーの宛先と通信するサーバー側アプリケーションの場合は、Oracle WebLogic Server JMSアプリケーションの開発のリモートJMSプロバイダの統合を参照してください。

  • 相互運用WebLogic Serverドメインには次の制限事項があります。

    • ドメイン名は一意にします。

    • WebLogicサーバー名は、2つの異なるドメインにある場合でも一意にします。

    • JMSサーバー名は、2つの異なるドメインにある場合でも一意にします。

    • 相互運用ドメインには、セキュリティ上の特殊な注意事項があります。

  • AQ JMSと相互運用するアプリケーションについては、「Oracle AQ JMSとの相互運用」を参照してください

  • ドメインを構成してドメイン間トランザクションを有効にするには、Oracle WebLogic Server JTAアプリケーションの開発のドメイン間トランザクションに対する通信の構成を参照してください。

WebLogic JMSクライアント・オプションの理解

クライアント・アプリケーション(WebLogic Serverに依存しないランタイム環境のアプリケーション)の場合、Java、.NET、Cクライアントなどの複数のJMSクライアント・オプションがあります。Oracle WebLogic Serverスタンドアロン・クライアントの開発のJMSクライアントを参照してください。

注意:

WebLogic JMSクライアントは、外部トランザクション・マネージャを直接サポートしません。可能な場合、WebLogic TMを使用します。上級ユーザーの場合、トランザクション・サブシステムの割込みトランザクション・マネージャ機能をXAリソースとして使用できます。

WebLogic URLの理解

リモートWebLogic Serverインスタンスまたはクラスタと通信するアプリケーションは、サーバーやクラスタに接続する場合、JNDI InitialContextオブジェクトの作成時またはアプリケーション属性の設定時(あるいはその両方)にURLを指定する必要があります。

  • JMSリソースと同じサーバーやクラスタで実行するアプリケーションのURLを指定しないでください。最初のコンテキストがURLを指定せずに作成されると、ローカル・サーバーまたはクラスタJNDIが自動的に参照されます。

  • URLが複数のアドレスに解決する場合、WebLogic Serverクライアントはリスト内のアドレスをランダムに選択して開始し、成功するまで順番に各アドレスを自動で試行します。

  • 本番システムでは、「URL構文」に示す複数のホスト/ポートURL表記を使用せず、最初のホスト名解決にDNSラウンド・ロビンやハードウェア・ロード・バランサを使用することを検討します

URL構文

WebLogic URL構文は次のようになります。

[t3|t3s|http|https|iiop|iiops]://address[,address]...

説明:

  • address = hostlist : portlist

  • hostlist = hostname [,hostname]...

  • portlist = portrange [+portrange]...

  • portrange = port [-port]

port-portを使用してポート範囲を示し、+で複数のポート範囲を分割します。たとえば、簡単なアドレスは、通常t3://hostA:7001のようになります。アドレスt3://hostA,hostB:7001-7002は、次のアドレスに相当します。

  • t3://hostA,hostB:7001+7002

  • t3://hostA:7001-7002,hostB:7001-7002

  • t3://hostA:7001+7002,hostB:7001+7002

  • t3://hostA:7001,hostA:7002,hostB:7001,hostB:7002

厳密なメッセージの順序付けのベスト・プラクティス

厳密に順序付けられたメッセージ処理が必要な場合、アプリケーションの設計と構成で、この要件を慎重に考慮する必要があります。

WebLogic JMS順序単位機能を利用する方法が最も簡単で効率的です。この方法では、通常、アプリケーションの変更は最小限(あるいは変更なし)で済みます。さらに、分散宛先、スケジュール済メッセージ、遅延メッセージ、トランザクション、ストア・アンド・フォワードとともに機能します。『Oracle WebLogic Server JMSアプリケーションの開発』のメッセージ順序単位の使用に関する項を参照してください。

高可用性のベスト・プラクティス

高可用性(HA)またはスケーラビリティが気になる場合、クラスタ化されたWebLogic機能を利用するようにアプリケーションを開発します。非クラスタ・アプリケーションからクラスタ・アプリケーションへの変更は一般的に困難なプロセスであるため、これは初期構成およびアプリケーションの設計段階で行われる最適な手段になります。

WebLogic JMSでは、メッセージは、宛先のホストJMSサーバーが実行している場合のみ利用できます。メッセージが中央の永続ストアにある場合、最初にメッセージを格納したサーバーがメッセージにアクセスできる唯一のJMSサーバーになります。WebLogicには、障害後にJMSサーバーを自動的に再起動または移行(あるいはその両方)する機能があります。また、同じクラスタ内の複数のJMSサーバー間で宛先をクラスタリング(分散)する機能もあります。

通常、HAは次の両方を使用することで実現します。

  • 分散宛先

  • HAサーバー/サービス。サーバーの全体移行または自動サービス移行のいずれかを使用して、JMSサーバーを自動的に再起動または移行(あるいはその両方)できます。

分散キューと分散トピック

分散キューは、通常、任意のクラスタ化されたキューイング使用例に対してかなり容易に適用できます。分散トピックは、次のような場合に最も適しています。

  • サブスクライバが非恒久である場合。

  • または、MDBを使用してサブスクライブする場合(直接的な非恒久サブスクライバには制限があり、最新の拡張要素を使用する必要があることがあります)。

Oracle WebLogic ServerメッセージドリブンBeanの開発のJMSトピックを使用したMDBの構成とデプロイメントと、Oracle WebLogic Server JMSアプリケーションの開発の分散宛先の使用を参照してください。

JMS外部サーバーの構成

JMS外部サーバーの構成で、次の内容を指定します。

  • oracle.jms.AQjmsInitialContextFactoryをJNDI初期コンテキスト・ファクトリとして指定します。

  • アプリケーション環境に必要なJDBCデータ・ソースを構成します。

詳細は、次を参照してください。

JMSのパフォーマンスとチューニング

次のリンクには、WebLogic JMSのチューニング時に考慮する項目のチェックリストが記載されています。

  • Oracle WebLogic ServerのパフォーマンスのチューニングのJMSのパフォーマンスとチューニングのチェックリストを参照してください。