2012年4月12日木曜日

FAQ : リモート JMS プロバイダの統合




xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> FAQ : リモート JMS プロバイダの統合

JMS (メッセージング)、JTA (トランザクション)、および JNDI (ネーミング) の各 Java EE 標準は、相互に連携することで、異なるホスト マシン間 (さらには異なるベンダ間) において信頼性の高い Java 対 Java メッセージングを提供します。BEA WebLogic Server には、これらの API を利用してリモート JMS プロバイダをローカル アプリケーションに統合するための各種ツールが用意されています。

以下の節では、WebLogic Server とリモート JMS プロバイダを統合する方法について説明します。

 


JMS および JNDI の用語

Q. リモート JMS プロバイダとは何ですか。

A. リモート JMS プロバイダは、ローカルのスタンドアロン WebLogic サーバの外部、または WebLogic サーバ クラスタの外部でホストされる JMS サーバです。リモート JMS サーバとしては、WebLogic JMS サーバだけでなく、非 WebLogic (外部) JMS サーバも使用できます。

Q. JNDI とは何ですか。

A. JNDI (Java Naming and Directory Interface) は、サービスやリソースに名前をマップする、Java EE ルックアップ サービスです。JNDI は、特定の (クラスタ化されていない) スタンドアロン WebLogic サーバ内、または WebLogic サーバ クラスタ内に存在する公開リソースのディレクトリを提供します。これらのリソースとしては、JMS 接続ファクトリ、JMS 送り先、JDBC (データベース) データ ソース、アプリケーション EJB などがあります。

WebLogic クラスタ内のいずれかの WebLogic サーバに接続しているクライアントは、クラスタ内のすべての WebLogic サーバでホストされているどの JNDI 公開サービスおよびリソースでも透過的に参照できます。クライアントは、クラスタ内の特定の WebLogic サーバについての明確な情報がなくても、そのサーバでホストされているリソースにアクセスできます。

Q. JMS 接続ファクトリとは何ですか。

A. JMS 接続ファクトリは、JNDI に保持されている名前付きエンティティ リソースです。アプリケーション、メッセージ駆動型 Bean (MDB)、およびメッセージング ブリッジは、JNDI 内の JMS 接続ファクトリをルックアップし、これを使用して JMS 接続を作成します。最終的には、この JMS 接続を使用して、メッセージを送信または受信するための JMS セッション、プロデューサ、およびコンシューマを作成します。

Q. JMS 接続 ID とは何ですか。

A. JMS 接続 ID は、JMS クライアント接続の命名に使用します。恒久サブスクライバでは名前付きの接続が必要になります。それ以外の場面では、接続に名前を付けることはあまりありません。なお、クラスタ化されたサーバ群内 (またはスタンドアロンのサーバ内) では、特定の名前付き接続を複数の JMS クライアントから同時に使用することはできません。また、既存の接続と同じ名前の接続を新たに作成しようとしても失敗します。

Q. JMS トピックと JMS キューの違いは何ですか。

A. JMS キューは、1 つのコンシューマにメッセージを配信します。一方、JMS トピックは、複数のコンシューマにメッセージのコピーを配信します。

Q. トピック サブスクリプションとは何ですか。

A. トピック サブスクリプションは、特定のサブスクライバへの配信を待機しているメッセージの内部キュー、と捉えることができます。サブスクリプションを作成すると、トピックに対してパブリッシュされた各メッセージのコピーがこの内部キューに蓄積されます。ただし、サブスクリプションが作成される前に送信されたメッセージは蓄積されません。サブスクリプションは共有できないため、複数のサブスクライバが特定のサブスクリプションを同時にサブスクライブすることはできません。

Q. 非恒久トピック サブスクライバとは何ですか。

A. 非恒久トピック サブスクライバは、JMS クライアントの存続期間のみ存続する名前なしのサブスクリプションを作成します。非恒久サブスクリプション内のメッセージは永続化されることはありません。これは、メッセージのパブリッシャによって永続的なサービス品質 (QOS) が指定されている場合でも同様です。JMS サーバを停止すると、すべての非恒久サブスクリプションが終了します。

Q. 恒久サブスクライバとは何ですか。

A. 恒久サブスクライバは、サーバの再起動後や恒久サブスクライバの終了後も存続する名前付きサブスクリプションを作成します。恒久サブスクライバは、トピック名、接続 ID、およびサブスクライバ ID を指定してそのサブスクリプションに接続します。クラスタ内にあるサブスクライバのサブスクリプションは、接続 ID とサブスクライバ ID の組み合わせによってユニークに命名されます。トピックに対してパブリッシュされた各永続メッセージのコピーは、そのトピックの恒久サブスクリプションに永続化されます。サーバのクラッシュや再起動が発生した場合は、恒久サブスクリプションおよびその未消費の永続メッセージが回復します。

 


トランザクションについて

Q. トランザクションとは何ですか。

A. トランザクションは、複数のアプリケーション操作をまとめたもので、最小単位として処理する必要のあるものです。一貫性を維持するため、トランザクション内のすべての操作は、すべてが成功するかすべてが失敗するかのどちらかでなければなりません。詳細については、『WebLogic JTA プログラマーズ ガイド』の「トランザクションについて」を参照してください。

Q. 統合においてトランザクションが重要なのはなぜですか。

A. アプリケーションの統合においては、トランザクションを使用してデータの一貫性を維持するのが一般的です。たとえば、メッセージが必ず 1 回のみ転送されるようにする場合には、単一のトランザクションを使用して、2 つの操作 (ソース送り先からのメッセージの受信、および対象送り先への送信) を 1 つにまとめることができます。また、トランザクションを使用することで、データベースの更新やメッセージング操作の実行における原子性を維持することもできます。

Q. JTA トランザクション、XA トランザクション、グローバル トランザクションとは何ですか。

A. Java EE では、単一のグローバル トランザクションのことを、明確に区別することなく JTA トランザクション、XA トランザクション、ユーザ トランザクション、グローバル トランザクションなどと呼びます。このようなトランザクションには、複数の異なる XA 対応リソースに対する操作が含まれている場合や、タイプの異なるリソースに対する操作が含まれている場合さえあります。JTA トランザクションは、常に現在のスレッドに関連付けられており、1 つのアプリケーション呼び出しとしてサーバ間で受け渡すこともできます。XA トランザクションの典型的な例は、WebLogic の JMS 操作および JDBC (データベース) 操作の両方が含まれているトランザクションです。


ERPシステムは何ですか

Q. ローカル トランザクションとは何ですか。

A. JMS ローカル トランザクションとは、単一のリソースまたはサービスのみが参加するトランザクションです。JMS ローカル トランザクションは、単一のベンダの送り先が参加する特定の JMS セッションに関連付けられます。XA トランザクションと異なり、データベース操作を JMS ローカル トランザクションに参加させることはできません。

Q. JMS では、ローカル トランザクションをどのような方法で提供しているのですか。

A. ローカル トランザクションは、JMS 固有の API によって提供されます。WebLogic JMS 以外のベンダの場合、トランザクション セッションのスコープを単一の JMS サーバに限定しているのが一般的です。WebLogic JMS では、クラスタ内の複数の送り先での複数の JMS 操作を、単一のトランザクション セッションのトランザクションに参加させることができます。言い換えると、トランザクション セッションのスコープは WebLogic クラスタであり、その JMS セッションのクラスタの外部にあるリモート JMS プロバイダをトランザクションに参加させることはできません。

Q. JMS ローカル トランザクションは統合にも利用できますか。

A. ローカル トランザクションは、スコープが単一のリソース (たとえばメッセージング サーバやデータベース サーバ) に限定されるため、通常は統合には使用しません。

Q. 自動トランザクション登録とは何ですか。

A. 自動トランザクション登録とは、以下に示す条件に基づいて、Java EE JTA トランザクションに参加するデータベース サーバやメッセージング サーバなどのリソースに対して実行する操作です。

  • リソースが XA トランザクション対応であること
  • リソースが現在のトランザクションに登録されていること
  • リソースへのアクセスに使用されるクライアント ライブラリがトランザクション対応 (XA 対応) であること

技術的には、トランザクション内の XA 対応リソースに対する操作を自動的に参加させることを自動登録と呼びます。

  • XA 対応 WebLogic API を使用する WebLogic クライアントには、現在のスレッドの JTA トランザクション内の操作が自動的に登録されます。XA 対応の WebLogic クライアントとしては、WebLogic JMS XA 対応 (またはユーザ トランザクション対応) 接続ファクトリ、グローバル トランザクション対応の JDBC 接続プール データ ソースなどがあります。
  • 外部 (非 WebLogic) JMS クライアントには、現在の JTA トランザクションは自動登録されません。このようなクライアントの場合は、現在のトランザクション内で別手順によってプログラム的に登録するか、WebLogic が提供する機能を使用して外部 JMS クライアントをラップし、ラッパー API 経由で外部 JMS クライアントにアクセスしたときに自動登録されるようにする必要があります。

外部ベンダに対して自動登録を提供するための JMS 機能は以下のとおりです。

WebLogic 以外のベンダの JMS 接続ファクトリが XA 対応かどうかは、そのベンダのドキュメントで確認してください。なお、トランザクション セッション (ローカル トランザクション) のサポートには、グローバル/XA トランザクションのサポートは含まれていません。

 


リモート プロバイダと統合する方法

Q. JMS クライアントは、どのような手順でリモート JMS プロバイダと通信するのですか。

A. JMS クライアントでは、どの JMS プロバイダと通信する場合でも、次の手順を実行する必要があります。

  1. JNDI を使用して、JMS 接続ファクトリ オブジェクトと JMS 送り先オブジェクトをルックアップする
  2. 接続ファクトリ オブジェクトを使用して JMS 接続を作成する
  3. JMS 接続と JMS 送り先オブジェクトを使用して、メッセージ コンシューマまたはプロデューサを作成する

Q. リモート JMS プロバイダとの通信を設定するためにはどのような情報が必要ですか。

A. リモート JMS プロバイダとの通信を設定するためには、以下の情報を用意する必要があります。

  • 送り先タイプ (リモート JMS 送り先がキューであるかトピックであるか)。
  • リモート JMS 送り先の JNDI 名。
  • 恒久トピック サブスクライバの場合は、それをユニークに特定するための接続 ID 名とサブスクライバ ID 名。メッセージ駆動型 EJB は、これらの値のデフォルト値を EJB 名に基づいて提供します。
  • 非 WebLogic リモート JMS プロバイダの場合
    • 初期コンテキスト ファクトリ クラス名 (JMS プロバイダの JNDI ルックアップ サービスの Java クラス名)
    • JMS プロバイダの JMS クライアント ライブラリおよび JNDI クライアント ライブラリを保持する Java jar ファイルの格納場所。これらの jar ファイルが、ローカル JVM のクラスパスに指定されていることを確認してください。
  • リモート プロバイダの JNDI サービスの URL。WebLogic サーバの場合、この URL は通常 t3://hostaddress:port という形式になっています。HTTP 上でトンネリングする場合は、URL の先頭を t3 ではなく http にします。アプリケーションと同じ WebLogic サーバ (または WebLogic クラスタ) 上に存在する WebLogic JMS サーバにアクセスする場合は、サーバ アプリケーション コードに URL を記述する必要はありません。
  • リモート プロバイダの JMS 接続ファクトリの JNDI 名。この接続ファクトリは、ローカル プロバイダではなくリモート プロバイダ上に存在している必要があります。
  • JMS アプリケーションでトランザクションを使用する場合は、接続ファクトリを XA 対応にする必要があります。WebLogic ドキュメントでは、XA 対応ファクトリをユーザ トランザクション対応と表現しています。

    WebLogic サーバでは、以下に示すコンフィグレーション不可の接続ファクトリ 3 つがデフォルトで提供されます。

    • weblogic.jms.ConnectionFactory (XA 対応でないファクトリ)
    • weblogic.jms.XAConnectionFactory (XA 対応ファクトリ)
    • weblogic.jms.MessageDrivenBeanConnectionFactory (メッセージ駆動型 EJB 用の XA 対応ファクトリ)
    • その他の WebLogic JMS 接続ファクトリは、明示的にコンフィグレーションする必要があります。

Q. 外部 JMS プロバイダの JNDI サービスの機能性に制限がある場合はどうしたらよいですか。

A. JMS プロバイダの接続ファクトリおよび送り先を特定する方法として好ましいのは、標準の Java EE JNDI ルックアップを使用する方法です。しかし、非 WebLogic JMS プロバイダの JNDI サービスは、使い勝手が悪い場合や信頼性に欠ける場合があります。この問題を解決するには、WebLogic サーバで動作する起動クラスまたは load-on-startup サーブレットを作成して、以下の処理を実行します。

    • 外部プロバイダ独自の (非 JNDI) API を使用して、接続ファクトリと JMS 送り先を特定する
    • JMS 送り先と JMS 接続ファクトリを WebLogic JNDI 内に登録する
    • サンプル コードについては、Dev2Dev で提供されている『Using Foreign JMS Providers with WebLogic Server』の「Creating Foreign JNDI Objects in a Startup Class」を参照してください。

Q. JMS リソースをプールする方法について教えてください。

A. リモートおよびローカルの JMS リソース (たとえば、クライアント接続およびセッション) は、プールすることでパフォーマンスを向上させることができます。メッセージ駆動型 EJB では、その内部 JMS コンシューマが自動的にプールされます。また、リソース参照によってアクセスする JMS コンシューマおよびプロデューサも自動的にプールされます。リソースのプーリング、およびカスタム プールの記述方法の詳細については、Dev2Dev の『BEA WebLogic JMS Performance Guide』を参照してください。


何税のブラケットファイルを共同で90K収入

Q. WebLogic で提供されるバージョン相互運用性について教えてください。

A. リリース 8.1 以降のすべての WebLogic サーバでは、異なるバージョン間での相互運用が完全にサポートされています。たとえば、WebLogic 10.0 JMS クライアントと WebLogic 8.1 JMS サーバの間でメッセージを送受信できます。

Q. リモート JMS プロバイダを統合するためのツールは用意されていますか。

A. 次の表に、リモート JMS プロバイダを統合するために使用できるツールをまとめます。

JMS リソース プーリング
リモート プロバイダの JMS クライアントを直接使用する
WebLogic サーバ プロバイダの場合は可。その他のプロバイダの場合は、プログラム的に登録を実行する必要がある。
不可。ただし、プログラム的に実行できる。
メッセージング ブリッジ
外部 JMS サーバ定義
不可。自動登録を実現するには、JMS リソース参照または MDB と組み合わせて使用する。
不可。リソース プーリングを実現するには、JMS リソース参照または MDB と組み合わせて使用する。
メッセージ駆動型 EJB

 


リモート プロバイダを統合する場合のベスト プラクティス

Q. EJB またはサーブレット内でリモート JMS プロバイダからメッセージを受信するにはどうしたらよいですか。

A. メッセージ駆動型 EJB を使用します。ただし、同期受信では、レシーバがメッセージの待機をブロックしている間、サーバ サイド スレッドがアイドル状態になるためお勧めできません。「Q. メッセージ駆動型 EJB (MDB) とは何ですか。」および「Q. MDB はどのような場合に使用すべきですか。」を参照してください。

Q. EJB またはサーブレット内からリモート JMS プロバイダにメッセージを送信するにはどうしたらよいですか。

A. リソース参照を使用します。リソース参照を使用することで、リソース プーリングと自動登録が可能になります。「Q. JMS リソース参照とは何ですか。」および「Q. JMS リソース参照を使用する利点は何ですか。」を参照してください。ラッパーが十分でない場合は、独自のプーリング コードを記述できます。詳細については、Dev2Dev の『BEA WebLogic JMS Performance Guide』を参照してください。

対象送り先がリモートである場合は、ローカル送り先とメッセージング ブリッジを追加して、ストア アンド フォワードによる高可用設計を実装することを検討してください。「Q. メッセージング ブリッジとは何ですか。」および「Q. メッセージング ブリッジはどのような場合に使用すべきですか。」を参照してください。

もう 1 つのベスト プラクティスは、外部 JMS サーバ定義を使用する方法です。外部 JMS サーバ定義を使用すると、アプリケーションの JMS リソースを管理的に変更できるため、アプリケーション コードに URL をハードコード化するのを避けることができます。また、リモート JMS プロバイダを参照するためのリソース参照を有効にする場合には、外部 JMS サーバ定義が必要になります。「Q. 外部 JMS サーバ定義とは何ですか。」および「Q. 外部 JMS サーバ定義を使用するのが最適なのはどのような場合ですか。」を参照してください。

Q. クライアントからリモート JMS プロバイダと通信するにはどうしたらよいですか。

A. 送り先が WebLogic Server によって提供されたものでなく、グローバル トランザクションないの送り先での操作を含める必要がある場合は、EJB 内の外部ベンダでの JMS 操作をサーバ プロキシを使用してカプセル化します。WebLogic サーバで実行されているアプリケーションは、現在のトランザクションにおいてトランザクション (XA) 対応の非 WebLogic JMS プロバイダを登録するための機能を備えています。「Q. EJB またはサーブレット内でリモート JMS プロバイダからメッセージを受信するにはどうしたらよいですか。」および「Q. EJB またはサーブレット内からリモート JMS プロバイダにメッセージを送信するにはどうしたらよいですか。」を参照してください。

ストア アンド フォワード機能が必要な場合は、メッセージをローカル送り先に送信し、メッセージング ブリッジを使用して外部送り先に転送することを検討してください。以下を参照してください。

別の選択肢としては、単純にリモート ベンダの JNDI および JMS API を直接使用するか、外部 JMS プロバイダをコンフィグレーションして、参照のハードコード化を避ける方法もあります。その場合は、外部プロバイダのクラス ライブラリをクライアントのクラスパスに追加する必要があります。

Q. WebLogic JMS の相互運用機能をチューニングするにはどうしたらよいですか。

A. 『WebLogic Server パフォーマンス チューニング ガイド』の「WebLogic Server EJB のチューニング」、「WebLogic メッセージング ブリッジのチューニング」、および「WebLogic JMS ストア アンド フォワードのチューニング」を参照してください。

 


外部 JMS サーバ定義の使用

Q. 外部 JMS サーバ定義とは何ですか。

A. 外部 JMS サーバ定義は、管理的にコンフィグレーションされたシンボリック リンクです。スタンドアロンの WebLogic サーバや WebLogic クラスタにおいては、この外部 JMS サーバ定義によって、リモート JNDI ディレクトリ内の JNDI オブジェクト (JMS 接続ファクトリ、送り先オブジェクトなど) と、JNDI ネームスペース内の JNDI 名との間をリンクさせています。外部 JMS サーバ定義をコンフィグレーションするには、Administration console または標準の JMX MBean API を使用します。また、スクリプトを使用して、プログラム的にコンフィグレーションすることも可能です。「リモートまたは外部 JMS プロバイダへのアクセスの簡略化」を参照してください。

Q. 外部 JMS サーバ定義を使用するのが最適なのはどのような場合ですか。

A. このリリースでは、外部 JMS サーバ定義を使用することで、JMS JNDI パラメータを 1 箇所にまとめることができます。1 つの定義を、複数の EJB、サーブレット、およびメッセージング ブリッジで共有できます。定義を変更する場合にも、デプロイメント記述子を再コンパイルしたり変更したりする必要はありません。外部 JMS サーバ定義は、以下の場合には特に便利です。


トップランクの広告代理店
  • メッセージ駆動型 EJB (MDB) の標準 JMS 通信プロパティを、アプリケーションの EJB デプロイメント記述子にハードコード化するのではなく、コンフィグレーションによって管理することが望ましい場合。これは、MDB のソース送り先がリモートでない場合にも当てはまります。
  • MDB にリモート送り先が含まれている場合。この場合は、デプロイメント記述子のコンフィグレーションが簡略化され、管理制御を強化できます。
  • EJB またはサーブレットにおいて、リモート送り先との送受信を行う場合。
  • リソース参照を有効にして、リモート JMS プロバイダを参照する場合。「Q. JMS リソース参照とは何ですか。」および「Q. 非トランザクション メッセージングでは、リソース参照をどのように使用したらよいですか。」を参照してください。

 


EJB/サーブレットの JMS リソース参照の使用

Q. JMS リソース参照とは何ですか。

A. リソース参照は、サーブレットおよび EJB アプリケーションの開発者が指定し、アプリケーションにパッケージ化するものです。リソース参照を使用すると、一定レベルの間接性を簡単に実現できます。つまり、JNDI 名をアプリケーションのソース コードに直接ハードコード化する代わりに、EJB 記述子に定義した JNDI 名をアプリケーションから参照することが可能になります。

JMS リソース参照は、以下の 2 つの機能を提供します。

  • JMS リソースがアプリケーションによって閉じられた場合に、それらのリソースを自動的にプーリングする
  • JMS リソースを現在のトランザクションに自動登録する (非 WebLogic JMS プロバイダの場合も可能)

EJB またはサーブレットのアプリケーション コード内で JMS リソース参照を使用するには、デプロイメント記述子に resource-ref 要素を追加し、JNDI コンテキストを使用して java:comp/env/jms/<参照名> という構文で参照をルックアップします。

リソース参照の機能は、アプリケーション コードの外部には提供されません。したがって、メッセージ駆動型 EJB のソース送り先のコンフィグレーションや、メッセージング ブリッジのソース送り先または対象送り先のコンフィグレーションには使用できません。

JMS リソース参照のプーリングの詳細については、「WebLogic JMS を EJB やサーブレットと組み合わせて使用するために拡張されたサポート」を参照してください。

Q. JMS リソース参照を使用する利点は何ですか。

A. JMS リソース参照には以下の利点があります。

  • サーブレットおよび EJB アプリケーションの移植性を確保できる。JMS リソース参照を使用することで、アプリケーションのソース コードを再コンパイルすることなく、アプリケーションの JMS リソースを変更できます。
  • JMS Connection、Session、および MessageProducer オブジェクトの自動プーリングが可能になる。
  • 非 WebLogic JMS プロバイダの自動トランザクション登録が可能になる。ただし、JMS プロバイダが XA 対応である必要があります。リソース参照を使用しない場合、非 WebLogic JMS プロバイダを現在のトランザクションに登録するには、プログラム手順を別途記述する必要があります。

Q. 外部 JMS プロバイダでは、リソース参照をどのように使用したらよいですか。

A. リソース参照でリモート JMS プロバイダを参照できるようにするには、リソース参照と外部 JMS 定義を組み合わせて使用する必要があります。これは、リソース参照には、URL や初期コンテキスト ファクトリを指定する場所が用意されていないためです。「Q. 外部 JMS サーバ定義とは何ですか。」を参照してください。

Q. 非トランザクション メッセージングでは、リソース参照をどのように使用したらよいですか。

A. 非トランザクションの場合は、グローバル トランザクション (XA) 対応の接続ファクトリは使用しないでください。使用した場合は、リソース参照が各メッセージング処理の内部トランザクションを自動的に開始およびコミットし、メッセージングのパフォーマンスに影響を及ぼします。「Q. トランザクションとは何ですか。」を参照してください。

 


WebLogic ストア アンド フォワードの使用

Q. WebLogic ストア アンド フォワード サービスとは何ですか。

A. WebLogic Server で WebLogic ストア アンド フォワード (SAF) サービスを使用すると、複数の WebLogic Server インスタンスに分散されているアプリケーション間でメッセージを確実に配信することができます。たとえば、SAF サービスを利用すると、ローカルの WebLogic Server インスタンス上で動作するアプリケーション、またはローカルの WebLogic Server インスタンスに接続するアプリケーションは、リモート サーバ上の送り先にメッセージを確実に配信できます。ネットワークの問題やシステム障害が原因で、メッセージの送信時に送り先が使用不能になっている場合、メッセージはローカルのサーバ インスタンスに保存されて、リモートの送り先が使用可能になった時点で転送されます。『WebLogic ストア アンド フォワードのコンフィグレーションと管理』の「ストア アンド フォワード サービスについてを参照してください。

Q. WebLogic ストア アンド フォワード サービスはどのような場合に使用すべきですか。

A. WebLogic ストア アンド フォワード (SAF) サービスは、WebLogic Server 9.0 以降のドメインの間で JMS メッセージを転送する場合に使用します。SAF サービスによるメッセージの配信対象間の関係は、以下のとおりです。

  • 2 つのスタンドアロンのサーバ インスタンス間
  • クラスタ内のサーバ インスタンス間
  • ドメイン内の 2 つのクラスタ間
  • 異なるドメイン間

Q. WebLogic ストア アンド フォワード サービスを使用できないのはどのような場合ですか。

A. WebLogic ストア アンド フォワード サービスは、以下の状況では使用できません。

  • リモート送り先から受信する場合 - メッセージ駆動型 EJB を使用するか、クライアント コンシューマを直接実装してください。
  • ローカル送り先にメッセージを送信する場合 - ローカル送り先に直接送信してください。
  • 以前のリリースの WebLogic Server にメッセージを転送する場合。「Q. メッセージング ブリッジとは何ですか。」を参照してください。
  • サード パーティの JMS 製品 (MQSeries など) と相互運用する場合。「Q. メッセージング ブリッジとは何ですか。」を参照してください。
  • リクエストに応答を返すために JMSReplyTo で一時的な送り先を使用する場合。
  • メッセージのレイテンシをあまり許容できない環境の場合。SAF によってレイテンシが増加し、スループットが低下する可能性がある場合。

 


WebLogic JMS SAF クライアントの使用

Q. WebLogic JMS SAF クライアントとは何ですか。

A. JMS SAF クライアント機能は、WebLogic Server 9.0 で導入した JMS ストア アンド フォワード サービスをスタンドアロン JMS クライアントに拡張したものです。この機能を使用することで、(一時的なネットワーク接続の障害などが原因で) JMS クライアントが送り先にアクセスできない場合でも、JMS クライアントはサーバサイドの JMS 送り先にメッセージを確実に送信できるようになります。サーバとの接続が切断されている間、JMS SAF クライアントによって送信されたメッセージはクライアントのファイル システム上でローカルに格納され、クライアントが再接続するときに、サーバサイドの JMS 送り先に転送されます。「 JMS SAF クライアントによる確実なメッセージ送信」を参照してください。

Q. WebLogic JMS SAF クライアントはどのような場合に使用すべきですか。

A. JMS メッセージを WebLogic Server 9.0 以降のドメインに転送する場合に使用します。


Q. JMS SAF クライアントを使用する場合、何か制限はありますか。

A. JMS SAF クライアントの使用に関する制限」を参照してください。

 


メッセージング ブリッジの使用

Q. メッセージング ブリッジとは何ですか。

A. メッセージング ブリッジは、WebLogic Server 上で動作する管理的にコンフィグレーションされたサービスです。コンフィグレーションされたソース JMS 送り先から、コンフィグレーションされた対象 JMS 送り先に、メッセージを自動的に転送します。これらの送り先は、ブリッジとは別のサーバにコンフィグレーションできます。また、外部 (非 WebLogic) 送り先をコンフィグレーションすることも可能です。ブリッジの各送り先は、リモート プロバイダの以下の 4 つのプロパティを使用してコンフィグレーションします。

  • 初期コンテキスト ファクトリ
  • 接続 URL
  • 接続ファクトリの JNDI 名
  • 送り先の JNDI 名

メッセージング ブリッジでトランザクションを使用するようにコンフィグレーションして、すべての XA 対応 (グローバル トランザクション対応) JMS プロバイダから別のプロバイダに「必ず 1 回」転送されるようにすることも可能です。

Q. メッセージング ブリッジはどのような場合に使用すべきですか。

A. 通常、メッセージング ブリッジは、ストア アンド フォワードによる高可用性設計要件を満たすために使用します。メッセージング ブリッジは、送信者のローカル送り先からのメッセージを消費し、これを送信者の実際の対象リモート送り先に転送するようにコンフィグレーションされます。つまり、対象リモート送り先にアクセスできない場合でも、送信者がそのローカル送り先にメッセージを送信できるようにすることで、高い可用性を提供します。リモート送り先にアクセスできない場合は、ローカル送り先が自動的にメッセージのストアを開始し、対象送り先がアクセス可能になり、ブリッジからメッセージを転送できるようになるまで継続します。

Q. メッセージング ブリッジを使用すべきでないのはどのような場合ですか。

A. 以下のような状況では、他の方法を使用することをお勧めします。

  • リモート送り先から受信する場合 - メッセージ駆動型 EJB を使用するか、クライアント コンシューマを直接実装してください。
  • ローカル送り先にメッセージを送信する場合 - ローカル送り先に直接送信してください。
  • メッセージのレイテンシをあまり許容できない環境の場合 - メッセージング ブリッジを使用するとレイテンシが長くなり、スループットが低下することもあります。メッセージング ブリッジでは、メッセージ パスに特別な送り先が挿入されるため、メッセージのレイテンシが長くなります。また、シングル スレッドでメッセージを転送するため、スループットが低下する場合があります。
  • WebLogic 9.0 のドメイン間でメッセージを転送する場合 - WebLogic ストア アンド フォワード機能を使用してください。「Q. WebLogic ストア アンド フォワード サービスとは何ですか。」を参照してください。

 


メッセージング Bean の使用

Q. メッセージ駆動型 EJB (MDB) とは何ですか。

A. メッセージ駆動型 EJB は、標準の JMS API を内部的に使用する EJB コンテナです。ローカル、リモート、または外部 JMS 送り先から非同期でメッセージを受信し、そのメッセージを処理するアプリケーション コードを呼び出します。MDB には以下のような特性があります。

  • ソース送り先に自動的に接続し、リモート送り先にアクセスできない場合は自動的に接続を再試行する。
  • JMS プロバイダが WebLogic でない場合でも、コンテナ管理のトランザクションでの受信メッセージの自動登録をサポートする。
  • JMS 接続、セッション、およびコンシューマを自動的にプールする。
  • MDB のソース送り先、URL、および接続ファクトリは、アプリケーションの一部としてパッケージ化される EJB および WebLogic 記述子にコンフィグレーションされる。
  • メッセージング処理のアプリケーション ロジックは、単一のメソッド コールバック onMessage() に含まれている。
  • トランザクション、セキュリティ、JDBC などの典型的な EJB アクションをサポートする完全な EJB である。

詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「メッセージ駆動型 EJB」を参照してください。

Q. MDB はどのような場合に使用すべきですか。

A. MDB は、JMS メッセージを受信および処理する WebLogic Server アプリケーションに適したメカニズムです。

Q. MDB と一緒にメッセージング ブリッジを使用する必要はありますか。

A. MDB 間にメッセージング ブリッジを配置するのではなく、MDB がソース送り先から直接消費するようにコンフィグレーションしてください。MDB は、ソース送り先にアクセスできない場合には自動的に接続を再試行するため、メッセージ パス内にメッセージング ブリッジを配置してさらに高い可用性を提供する必要はありません。メッセージング ブリッジを配置すると、パフォーマンスに影響が及ぶ可能性があります。「Q. メッセージング ブリッジを使用すべきでないのはどのような場合ですか。」を参照してください。

Q. MDB にはどのようなコンフィグレーションが最適ですか。

A. 以下に、MDB をコンフィグレーションする際のヒントを示します。

  • MDB の同時実行性とスレッド プールをコンフィグレーションするには、max-beans-in-free-pool および dispatch-policy フィールドを使用する。MDB のスレッド プール内の使用可能なサーバ スレッドの数によっては、同時に作成されるインスタンスの数が max-beans-in-free-pool の値よりも少なくなることがあります。
  • リモート JMS プロバイダから消費するように MDB をコンフィグレーションする場合は、外部 JMS サーバ定義を使用する。WebLogic MDB 記述子から直接リモート送り先を参照するようにコンフィグレーションすることも可能ですが、この情報はアプリケーションにパッケージ化されてしまうため、動的に変更することができません。外部 JMS サーバ定義をコンフィグレーションし、MDB が外部定義を参照するようにコンフィグレーションすることをお勧めします。なお、一部のドキュメントでは、外部 JMS サーバ定義を「ラッパー」と呼んでいます。「Q. 外部 JMS サーバ定義とは何ですか。」を参照してください。
  • コンテナ管理のトランザクション用に MDB をコンフィグレーションする場合は注意が必要。MDB でコンテナ管理の XA トランザクションをサポートするには、MDB の記述子ファイルで transaction-type を Container、trans-attribute を Required に設定し、XA 対応の JMS 接続ファクトリを使用する必要があります。このように設定しないと、MDB はトランザクション非対応になります。WebLogic のデフォルト設定では、MDB の接続ファクトリは XA 対応になっています。MDB は、トランザクションを自動的に開始し、トランザクション内で受信したメッセージを自動的に登録します。

 


JMS の相互運用性に関するドキュメント

Q. JMS の相互運用性に関するドキュメントは他にもありますか。

A. WebLogic JMS の一般的な情報については、「メッセージング (JMS)」トピック ページおよび http://dev2dev.bea.com/jms/ の JMS に関する特集記事を参照してください。



These are our most popular posts:

FAQ: ネットワーク管理 WebSAM VitalQIP

Q2. VitalQIPを使用することのメリットは何ですか。 A2. VitalQIPはデータベースを用い て、DHCPサーバからのIPアドレスの払い出し情報などを監視し、GUIによる効率的なIP アドレス管理機能を提供します。 これを使うことによって以下のメリットがあります。 read more

クラウドサービスプラットフォーム Cosminexus:各製品について ...

対話作業フロー uCosminexus Navigation Platformとは何ですか? 業務フローと ガイドによって業務の流れとシステムをWeb画面上で統合する実行/開発環境です。 ... ユーザの操作に応じて実行されるJavaプログラム(プラグイン)を登録できますので、 Webサービスの呼び出しやデータベースアクセスなどを自由 ... また、それぞれの ステップで必要な情報を対応するガイド画面で表示することで、必要な情報を探し回る ことがなくなります。 ... 他社のEIP製品と比べて、uCosminexus Portal Frameworkの 特色は何ですか? read more

『我が国のデータベース構築・統合戦略』第2回

第2回 「データベースを統合利用するための基盤としてのセマンティックウェブ技術」 ... 第1段階:データベースを網羅的に収集しメタデータを付与すること・第2段階:それぞれの データベースにおいてフォーマットと用語の統一 .... ユーザーにどのように提示するか, また,そのデータをやりとりする適切なイ ンターフェイスは何かを,ユースケースをつうじ 検討している. ... なお、本記事は細胞工学2011年11月号掲載の原稿を改変したもの です。 read more

Altova XMLSpy ビジネス FAQ

XMLSpy® 2012 を使用する利点とは何ですか? ... XMLSpy® 2012 を使って リレーショナルデータベースを扱うことはできますか? ... Altova XMLSpy® 2012 は XML のための統合開発環境 (IDE) で、XML をベースにしたアプリケーションの作成に 使用され ... read more

Related Posts



0 コメント:

コメントを投稿