Oracle® Fusion Middleware

Oracle WebLogic Server 12.1.3 JMSリソース・アダプタの管理

12c (12.1.3)

E56272-02(原本部品番号:E41853-02)

2015年8月

このドキュメントは、WebLogic JMSを使用したWebLogic Server 12.1.3と相互運用するために、サード・パーティのアプリケーション・サーバーでホストされているJMSリソース・アダプタを構成および管理する方法について説明します。

Oracle Fusion Middleware Oracle WebLogic Server 12.1.3 JMSリソース・アダプタの管理, 12c (12.1.3)

E56272-02

Copyright © 2007, 2015, Oracle and/or its affiliates.All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- ドキュメントのアクセシビリティについて

- 表記規則

1 概要とロードマップ

- ドキュメントの範囲および対象読者

- このドキュメントの構成

- 関連ドキュメント

- JMS開発者向けのサンプルとチュートリアル

- JMSリソース・アダプタのサンプル

- Avitek Medical Recordsアプリケーション(MedRec)とチュートリアル

- このリリースでの新機能と変更された機能

2 WebLogic JMSリソース・アダプタの理解

- JMS RAの概要

- サポートされているアプリケーション・サーバー

- サポートされているWebLogic Server宛先

- WebLogic Server環境でのJMS RAの場所

3 JMS RAの管理

- JMS RAコンポーネント

- JMS環境でJMS RAを統合する方法

- 一般的な制限および考慮点

- weblogic.jms.extension APIのサポート

- サポートされているweblogic.jms.extensionインタフェース

- サポートされているweblogic.jms.extensionクラス

- JMS RAの例

4 Oracle GlassFish ServerでのJMS RAの管理

- JCAコンテナを使用した資格証明の保護

- Oracle GlassFish Serverでの接続の遅延登録のサポート

- Oracle GlassFish Serverを管理する場合の制限および考慮点

- Oracle GlassFish Serverの参考資料

5 メッセージの消費の理解

- インバウンド・メッセージを消費するためのMDBの構成

- ra.xmlファイルでのinbound-resourceadapterプロパティの構成

- 必須のactivation-configプロパティ

- オプションのactivation-configプロパティ

- inbound-resourceadapterの構成例

- ejb-jar.xmlファイルでのactivation-configプロパティの構成

- ejb-jar.xmlファイルと注釈

- ejb-jar.xmlファイルでの必須のactivation-configプロパティの構成

- ejb-jar.xmlファイルでのオプションのactivation-configプロパティの構成

- JMS RA activation-configプロパティを含むejb-jar.xmlファイルの例

- スレッド管理

- 物理宛先の最大スレッドの設定

- 分散宛先の最大スレッドの設定

- 例外キューの使用

- userNameおよびpasswordの設定

- 詳細なWebLogic JMSリソースの構成

- JMS RAと共有可能なサブスクリプション

- 順序付けメッセージ処理の使用

- 分散トピックから消費する場合の設計戦略

- レプリケートされた分散トピックとパーティション化された分散トピック

- 分散トピックのOne-Copy-Per-Application設計戦略

- 分散トピックのOne-Copy-Per-Server設計戦略

- スタンドアロン(非分散)トピックからの消費

- インバウンド通信のベスト・プラクティス

6 アウトバウンドJMSメッセージの送信

- JMS RAアウトバウンド通信の基本

- アウトバウンド接続の定義

- JMS RA接続ファクトリ

- JMS RA接続ファクトリのプロパティの構成

- JMS RAアウトバウンド接続の制限

- アウトバウンド・メッセージをロード・バランシングする方法の理解

- 接続ファクトリを使用したRMIロード・バランシング

- 分散宛先へのメッセージのロード・バランシング

- アウトバウンド通信のトランザクション・サポートの構成

- アウトバウンド通信の認証の構成

7 宛先およびネーミング・コンテキストの構成

- コンテキストadminobjectオブジェクト

- 自動宛先ラッピングの使用

- 宛先adminobjects

- adminobject Stanzaの例

8 リソース・プロバイダの理解

- 基本的なリソース・プロバイダの構成

- groupDefinitionsを使用した高度なリソース・プロバイダの構成

- リソース・プロバイダの構成例

9 トランザクション処理の理解

- JMS RAのトランザクション・サポート

- アウトバウンド通信のトランザクション・サポート

- インバウンド・トランザクションのトランザクション・サポート

- トランザクションにおける接続の遅延登録

- WebLogicのクラスタ全体のリカバリ

10 障害の管理の理解

- WebLogic Serverの障害

- WebLogic分散宛先メンバーの障害

- トランザクション・リカバリ

- WebLogic Serverが使用不可能になった場合のトランザクション・リカバリ

- 準備前の障害

- 準備後の障害

- 外部サーバーが使用不可能になった場合のトランザクション・リカバリ

- WebLogicサービスの移行の理解

- インバウンド通信

- アウトバウンド通信

11 JMS RA接続の保護

- JCAセキュリティ

- WebLogic JMSセキュリティ

- JMSセキュリティ・モデルの概要

- JMSリソースの保護

- ユーザー名とパスワードの指定

- JCAコンテナを使用したインバウンド接続のユーザー名とパスワードの指定

- JNDIを使用したインバウンド接続のユーザー名とパスワードの指定

- 接続ファクトリを使用したインバウンド接続のユーザー名とパスワードの指定

- アウトバウンド接続のユーザー名とパスワードの指定

- Oracleウォレットを使用した資格証明の保護

- 資格証明を設定するためのJNDIの構成例

- wljmsra暗号化ユーティリティの使用

- ウォレットの作成

- エイリアスの作成

- エイリアスの置換

- エイリアスの削除

- ウォレット内のエイリアスの表示

- ワイヤ通信の保護

12 JMS RAのデプロイメント・ディスクリプタ要素とプロパティ

- JMS RAのra.xmlの概要

- JMS RAのra.xmlファイルの例

- JMS RAの要素の説明

- activationspec

- activationspec-class

- adminobject

- adminobject-class

- adminobject-interface

- authentication-mechanism

- authentication-mechanism-type

- config-property-name

- config-property-type

- config-property-value

- connection-definition

- connectionfactory-impl-class

- config-property

- connectionfactory-interface

- connection-impl-class

- connection-interface

- connector

- credential-interface

- display-name

- eis-type

- inbound-resourceadapter

- managedconnectionfactory-class

- messageadapter

- messagelistener

- messagelistener-type

- reauthentication-support

- required-config-property

- resourceadapter

- resourceadapter-class

- resourceadapter-version

- outbound-resourceadapter

- transaction-support

- vendor-name

- JMS RAのインバウンド・プロパティ

- JMS RAのアウトバウンドの構成プロパティ

- JMS RAのadminobjectの構成プロパティ

はじめに

ここでは、ドキュメントのアクセシビリティの機能と、このマニュアル(『Oracle WebLogic Server 12.1.3 JMSリソース・アダプタの管理』)で使用している表記規則について説明します。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info) か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 概要とロードマップ

この章では、このマニュアル(『Oracle WebLogic Server 12.1.3 JMSリソース・アダプタの管理』)の内容と構成について説明します。

この章には次の項が含まれます:

- ドキュメントの範囲および対象読者

- このドキュメントの構成

- 関連ドキュメント

- JMS開発者向けのサンプルとチュートリアル

- このリリースでの新機能と変更された機能

ドキュメントの範囲および対象読者

このドキュメントは、外部アプリケーション・サーバーでWebLogic JMSを使用し、WebLogic JMSクライアントを統合するJava EE Connector Architectureリソース・アダプタを使用して相互運用する必要があるシステム管理者を対象としています。

ここでは、Javaプラットフォーム、Enterprise Edition (Java EE)、Java EE Connector Architectureバージョン1.6リソース・アダプタおよびJMSのプログラミングの概念に精通している読者を対象としています。このドキュメントでは、WebLogic Serverで提供される付加価値機能と、WebLogic JMSリソース・アダプタ(JMS RA)の構成および使用方法に関する主要な情報を重点的に扱います。

このドキュメントの構成

- この第1章「概要とロードマップ」では、新機能および関連ドキュメントを含む、このマニュアルの構成および範囲について説明します。

- 第2章「WebLogic JMSリソース・アダプタの理解」では、WebLogic JMSリソース・アダプタ(JMS RA)のコンポーネント、概念および機能の概要について説明します。

- 第3章「JMS RAの管理」では、外部アプリケーション・サーバーでWebLogic JMSを使用して相互運用するために、JMS RAを使用する際に必要なコンポーネント、設計オプションおよびその他の前提条件としての考慮事項について説明します。

- 第4章「Oracle GlassFish ServerでのJMS RAの管理」では、Oracle GlassFish ServerでJMS RAのデプロイを使用する場合の追加の構成情報および考慮点について説明します。

- 第5章「メッセージの消費の理解」では、外部アプリケーション・サーバーでWebLogic JMSメッセージをインバウンド・メッセージとして非同期に消費するためのMDBを構成するために、JMS RAのra.xmlファイルを構成する方法について説明します。

- 第6章「アウトバウンドJMSメッセージの送信」では、JMS RAを使用したJMSメッセージの送信方法について説明します。

- 第7章「宛先およびネーミング・コンテキストの構成」では、インバウンドとアウトバウンドの通信の宛先およびネーミング・コンテキストを定義するadminobject要素の構成に関する情報を提供します。

- 第8章「リソース・プロバイダの理解」では、リソース・プロバイダの使用方法と構成方法について説明します。リソース・プロバイダでは、JMS RAによるWebLogic JMSプロバイダへの接続を可能にするJNDIプロパティを定義します。

- 第9章「トランザクション処理の理解」では、外部アプリケーション・サーバーとWebLogic Serverの間で相互運用するためにJMS RAを使用する場合のトランザクション処理およびリカバリについて説明します。

- 第10章「障害の管理の理解」では、JMS RAがWebLogic Serverおよび外部アプリケーション・サーバーの障害に対応する方法ついて説明します。

- 第11章「JMS RA接続の保護」では、JMS RAのセキュリティに関する考慮事項について説明します。

- 第12章「JMS RAのデプロイメント・ディスクリプタ要素とプロパティ」では、WebLogic JMS RAのデプロイメント・ディスクリプタ・ファイルra.xmlについて説明します。

関連ドキュメント

JMS RAの構成および使用に関連するトピックについては、次のドキュメントを参照してください。

- Oracle Fusion Middleware Oracle WebLogic Server JMSリソースの管理では、WebLogic JMSリソースの構成および管理について説明します。

- 『Oracle Fusion Middleware Oracle WebLogic Server JMSアプリケーションの開発』は、WebLogic JMSアプリケーションの開発用マニュアルです。

- 『Oracle Fusion Middleware Oracle WebLogic Serverのパフォーマンスのチューニング』では、WebLogic Serverのパフォーマンスを監視してコンポーネントをチューニングする方法について説明します。

- Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発は、WebLogic Serverアプリケーションの開発用マニュアルです。

- 『Oracle Fusion Middleware Oracle WebLogic Serverへのアプリケーションのデプロイ』は、WebLogic Serverアプリケーションの開発についての主要なマニュアルです。

- Oracle Fusion Middleware Oracle WebLogic Serverリソース・アダプタの開発には、WebLogicリソース・アダプタと、Java EE Connector ArchitectureのWebLogic Server実装に関する情報が含まれています。

JMS開発者向けのサンプルとチュートリアル

このドキュメントの他にも、JMS開発者向けに様々なコード・サンプルとチュートリアルが用意されています。それらのサンプルとチュートリアルはWebLogic Server JMSの動作を例示し、主要なJMS開発タスクを実行する実際的な手順を示します。

独自のJMSアプリケーションを開発する前に、まずJMSサンプルの一部またはすべてを実行することをお薦めします。

JMSリソース・アダプタのサンプル

このサンプルは、外部アプリケーション・サーバーにデプロイされたWebLogic JMSリソース・アダプタ(JMS RA)を利用し、WebLogic JMSサービスと相互運用する方法を示しています。このサンプルは、WebLogic環境にサンプルをインストールする場合に含まれます。「JMS RAのサンプル」を参照してください。

Avitek Medical Recordsアプリケーション(MedRec)とチュートリアル

MedRecはWebLogic Serverに付属したエンドツーエンドのサンプルJava EEアプリケーションであり、一元的で独立した医療記録管理システムをシミュレートします。MedRecアプリケーションには、患者、医師、および管理者に対して、様々なクライアントを使用して患者のデータを管理するフレームワークが用意されています。

MedRecはWebLogic ServerとJava EEの機能を例示し、Oracle推奨のベスト・プラクティスを重要点として示します。MedRecは、WebLogic Serverインストールとともにオプションでインストールできます。MedRecは、ORACLE_HOME\user_projects\domains\medrecディレクトリから起動できます(ORACLE_HOMEは、Oracle WebLogic ServerをインストールしたときにOracle Homeとして指定したディレクトリです)。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの理解』のサンプル・アプリケーションとコード・サンプルに関する項を参照してください。

MedRecには、Webアプリケーション、Webサービス、ワークフロー・アプリケーションおよび将来のクライアント・アプリケーションからのリクエストを共同で処理する複数のEnterprise Java Beans (EJB)で主に構成されるサービス層があります。このアプリケーションには、メッセージドリブンEJB、ステートレス・セッションEJB、ステートフル・セッションEJBおよびエンティティEJBが含まれます。

このリリースでの新機能と変更された機能

このリリースで導入されたWebLogic Serverの新機能の一覧については、『Oracle Fusion Middleware Oracle WebLogic Serverの新機能』を参照してください。

2 WebLogic JMSリソース・アダプタの理解

この章では、WebLogic Server 12.1.3においてWebLogic JMSリソース・アダプタのコンポーネント、概念および機能の概要について説明します。

この章には次の項が含まれます:

- JMS RAの概要

- サポートされているアプリケーション・サーバー

- サポートされているWebLogic Server宛先

- WebLogic Server環境でのJMS RAの場所

JMS RAの概要

WebLogic Serverは、Java EE Connector Architectureバージョン1.6に準拠したリソース・アダプタ(JMSリソース・アダプタまたはJMS RAと呼ばれる)を提供し、サポートされている外部アプリケーション・サーバーとのWebLogic JMSクライアントの統合を実現します。

JMS RAには次の機能があります。

- JMS用のJCAアウトバウンドおよびインバウンド規約の実装。

- JMS接続ファクトリおよび宛先を参照するためのJNDIマッピング。

- MDB統合(変化するメッセージ負荷に応じた動的調整を含む)

- JMS接続プーリング。

- JMS操作の遅延解決(起動順の独立性、JMSプロバイダの起動と停止などの動的管理の許容範囲、プロバイダ障害の際の接続の再試行など)。詳細は「トランザクションにおける接続の遅延登録」を参照してください。

- 非WebLogicのトランザクション・マネージャと透過的に統合され、ほとんどの一般的な障害状態から適切にリカバリする、WebLogic JMS用のクラスタ対応XAのサポート。詳細は、「トランザクションのリカバリ」を参照してください。

- 分散宛先のすべてのアクティブ・メンバーが常に処理できる(滞留するメッセージがない)、非同期メッセージ処理のサポート。さらに、非同期メッセージ処理は、分散トピック全体にパーティション化された単一の論理恒久サブスクリプションなどの高度なパブリッシュ・オプションやサブスクライブ・オプションを提供します。

- アダプタをラッピングしたオブジェクトを、WebLogic JMSインタフェースにキャストすることを可能にする、WebLogic JMS拡張機能のサポート。詳細は「weblogic.jms.extension APIのサポート」を参照してください。

- WebLogicセキュリティ・モデルのサポート。詳細は「JMS RA接続の保護」を参照してください。

- ポイズン・メッセージの高度な処理。JMS RAを構成して、複数回配信されたメッセージを、自動的に指定したエラー宛先にリダイレクトするようにできます。詳細は「例外キューの使用」を参照してください。

- 宛先コンテキストの単一のRA管理対象オブジェクトの使用による、宛先の複数のJNDIマッピング構成の簡略化。これにより、アプリケーションは任意の数の宛先を直接参照することが可能になり、複数の管理対象オブジェクトおよびresource-env参照を構成する必要がなくなります。詳細は「自動宛先ラッピングの使用」を参照してください。

サポートされているアプリケーション・サーバー

このリリースのJMS RAでは、デプロイメントは、Oracle GlassFishバージョン3.1以上でサポートされています。

注意:
いずれのリリースのOracle WebLogic Serverでも、JMS RAをデプロイすることはサポートされていません。WebLogic ServerでJMS RAをデプロイすると、何も通知されずに失敗します。

サポートされているWebLogic Server宛先

このリリースのJMS RAでは、Oracle WebLogic Serverリリース12.1.2以上の宛先との外部アプリケーション・サーバーの相互運用性がサポートされています。

WebLogic Server環境でのJMS RAの場所

wljmsra.jarファイルは、WebLogic Serverインストール内のWL_HOME\server\libディレクトリにあります。

3 JMS RAの管理

この章では、外部アプリケーション・サーバーでWebLogic JMSを使用して相互運用するために、JMS RAを使用する際に必要な主要コンポーネント、設計オプションおよびその他の前提条件としての考慮事項を含む、WebLogic Server 12.1.3のJMS RA実装について説明します。

この章には次の項が含まれます:

- JMS RAコンポーネント

- JMS環境でJMS RAを統合する方法

- 一般的な制限および考慮点

- weblogic.jms.extension APIのサポート

- JMS RAの例

JMS RAコンポーネント

JMS RAは、次の基本コンポーネントで構成されます。

- ra.xmlファイル: 外部アプリケーション・サーバーとWebLogic JMSの間で相互運用するために、JMS RAを構成する際に使用されるxmlファイルです。

- wlthint3client.jarファイル: WebLogicシンT3 Javaクライアントは、外部アプリケーション・サーバーおよびWebLogic Server上で実行されるアプリケーション間の統合を提供する、軽量のクライアントです。一般的なユースケースの1つに、WebLogic JMS宛先との統合があります。詳細は、Oracle Fusion Middleware Oracle WebLogic Serverスタンドアロン・クライアントの開発のWebLogicシンT3クライアントの理解に関する項を参照してください。

- Oracleウォレットのサポート用のクラス・ファイルとJARファイル:

- oraclepki.jar

- osdt_cert.jar

- osdt_core.jar

- WalletUtilWrapper.class

詳細は、「Oracleウォレットを使用した資格証明の保護」を参照してください。

- weblogic.jms.ra.jarファイル: WebLogic Server Java EE Connector Architectureバージョン1.6準拠のリソース・アダプタの実装。

JMS環境でJMS RAを統合する方法

次の項では、JMS RAを外部アプリケーション・サーバーと統合して、アプリケーションがWebLogic JMSと相互運用できるようにするのに必要な手順の基本的な概要を説明します。

- アプリケーション・コードはJMSに準拠している必要があり、サポートされているweblogic.jms.extensionsを使用できます。JMS RAの機能、サポートおよび制限の詳細は、「WebLogic JMSリソース・アダプタの理解」および「一般的な制限および考慮点」を参照してください。WebLogic JMSのプログラミングに関する基本情報については、『Oracle Fusion Middleware Oracle WebLogic Server JMSアプリケーションの開発』のWebLogic JMSの理解に関する項を参照してください。

- 使用環境に合わせて、ra.xmlファイルを構成します。

- メッセージの消費の理解

- アウトバウンドJMSメッセージの送信

- 宛先およびネーミング・コンテキストの構成

- リソース・プロバイダの理解

- JMS RAをデプロイおよび管理します。デプロイ、構成および監視などの管理タスクに対して、外部アプリケーション・サーバーのネイティブ・サポートを使用します。参照:

- Oracle GlassFish ServerでのJMS RAの管理

Oracle Fusion Middlewareのエラー・メッセージ・リファレンスでは、JMS RAおよびその他のOracle Fusion Middlewareコンポーネントの使用時に発生するエラー・メッセージについて説明します。

一般的な制限および考慮点

この項では、JMS RAを使用する場合の一般的な制限および考慮点について説明します。

- 2つ以上のJMS RAが同じアプリケーション・サーバー上にデプロイされている場合、すべてのデプロイメントでwljmsra.rarファイルの同じWebLogicリリース・バージョンを使用する必要があります。異なるリリース・バージョンには、機能の変更およびバグ修正により異なるクラスが含まれる場合があるため、任意の時点でアプリケーション・サーバーによってロードされるJMS RAのクラスのバージョンを予測することはできません。

- リスニングMDBが使用不可能になった場合、JMS RAによって恒久サブスクライバが自動的にサブスクライブ解除(削除)されることはありません。WebLogic Server MDBはサブスクライブ解除の機能をサポートしていますが、サブスクリプションを作成して名前を付けることもできます。外部アプリケーション・サーバーを使用すると、通常ユーザーはMDB構成でサブスクリプション名を指定できるため、指定された恒久サブスクライバのサブスクライブ解除が適切であるかどうかを判断することが困難になります。指定されたサブスクリプションの削除が適切であると判断できた場合でも、JCA規約では、サブスクライバを削除するためのコールバック・インタフェースの標準実装は提供されません。

- JMSクライアントの自動フェイルオーバーはサポートされていません。「JMS RAアウトバウンド接続の制限」を参照してください。

- WebLogic JMS RAを利用するアプリケーションは、外部アプリケーション・サーバーの接続マネージャに関連付けられているWebLogic JMS接続を使用します。様々なJava EE仕様で説明されているように、これらのJMSの管理対象接続は、他のアプリケーションによって再利用するために、作成および使用され、外部アプリケーション・サーバーの接続プールに合わせて再調整されます。これには次の制限があります。

- 接続上でsetClientIDを使用することはできません。接続上に設定されたClientIDは削除することができないため、その接続を再利用するすべてのアプリケーションには知らずにClientID値が含まれることになります。また、このような接続を使用するアプリケーションでは、setClientIDは接続上ですでに実行されているため、この操作をコールすることができません。

- JEE 6仕様で指定されているように、setExceptionListenerなどのコンテナによる接続管理を妨げる可能性のあるその他のメソッドはサポートされていません。

- 接続ファクトリの設定の一部として、setSubscriptionSharingPolicyなどの接続プロパティを設定します。そうでない場合、接続上でプロパティを直接設定する前に、管理対象接続プールに接続およびセッションが作成されていることを確認する必要があります。

- メッセージドリブンBeanのメッセージ・リスナーの場合、<trans-attribute>要素に使用できる値は、REQUIREDおよびNOT_SUPPORTEDのみです。http://docs.oracle.com/javaee/6/api/javax/ejb/TransactionAttributeType.htmlを参照してください。

weblogic.jms.extension APIのサポート

次の項では、このリリースのJMS RAでweblogic.jms.extensions APIをサポートする方法について説明します。

- サポートされているweblogic.jms.extensionインタフェース

- サポートされているweblogic.jms.extensionクラス

サポートされているweblogic.jms.extensionインタフェース

JMS RAはカスタム・ラッパー・クラスを使用して、サポートされているweblogic.jms.extensionsインタフェースを自動的に実装し、順序単位(UOO)やメッセージ・スケジューリングなどのWebLogic機能をサポートします。JMS RA ra.xmlファイルには、適切なWebLogic JMSラッパー・クラスに対応するエントリが事前に入力されているため、サポートされているWebLogic JMS機能にアクセスするための追加の構成は必要ありません。

注意:
weblogic.jms.extensionsを使用する場合、WebLogic接続ファクトリを使用します。「JMS RA接続ファクトリ」を参照してください。

このリリースのJMS RAでは、次のweblogic.jms.extensionsインタフェースをサポートしています。

- weblogic.jms.extensions.WLConnection

- weblogic.jms.extensions.WLSession

- weblogic.jms.extensions.WLQueueSession

- weblogic.jms.extensions.WLTopicSession

- weblogic.jms.extensions.WLDestination

- weblogic.jms.extensions.WLMessageProducer

- weblogic.jms.extensions.WLMessage

- weblogic.jms.extensions.XMLMessage

サポートされているweblogic.jms.extensionクラス

すべてのweblogic.jms.extensionsがサポートされています。

JMS RAのサンプル

Oracleでは、WebLogic環境にサンプルをインストールするときに確認するためのJMS RAのサンプルを提供します。このサンプルは、外部アプリケーション・サーバーにデプロイされたJMS RAを利用し、単純な従業員クロックイン・アプリケーションを使用して、WebLogic JMSサービスと相互運用する方法を示しています。

サンプルは、次の方法を示したものです。

- WebLogic Serverクラスタの構成および使用

- WebLogic接続ファクトリの構成および使用

- 分散トピックとキューの構成および使用

- サポートされている外部アプリケーション・サーバーへのJMS RAのデプロイ「サポートされているアプリケーション・サーバー」を参照してください。

- 次のものを含むJMS RA config-propertiesの構成

- JMSサービスを提供するWebLogic ServerのWebLogic JNDIコンテキスト

- DistributedQueueとしてWebLogic JNDIにバインドされている宛先に、ローカルJNDI名sample/destination/queueをマッピングするadminobject要素

- DistributedTopicとしてWebLogic JNDIにバインドされている宛先に、ローカルJNDI名sample/destination/topicをマッピングするadminobject要素

- weblogic.jms.ConnectionFactoryとしてWebLogic JNDIにバインドされている接続ファクトリにマッピングされる、sample/factoryとしてローカルJNDI名にバインドされている接続ファクトリ

- JMS RAの接続ファクトリおよび宛先に定義されているローカルJNDI名にマッピングされる、サーブレットのweb.xmlの要素resource-refおよびresource-env-refの構成

- メッセージドリブンBean (MDB)がインバウンド・メッセージを消費できるために必要なactivation-config要素の構成

JMS RAのサンプルは、EXAMPLES_HOME\wl_server\examples\src\examples\jms\resourceAdapterにあり、ここでEXAMPLES_HOMEは、WebLogic Serverコード・サンプルが構成されているディレクトリを表しています。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの理解』のサンプル・アプリケーションとコード・サンプルに関する項を参照してください。

4 Oracle GlassFish ServerでのJMS RAの管理

この章では、Oracle GlassFish ServerでJMS RAのデプロイを使用する場合の追加の構成情報および考慮点について説明します。

この章には次の項が含まれます:

- JCAコンテナを使用した資格証明の保護

- Oracle GlassFish Serverでの接続の遅延登録のサポート

- Oracle GlassFish Serverを管理する場合の制限および考慮点

- Oracle GlassFish Serverの参考資料

JCAコンテナを使用した資格証明の保護

可能な場合、セキュアなメソッドを使用した資格証明を設定するメソッドを提供するために、Oracle GlassFish Server JCAコンテナを使用することをお薦めします。

詳細は、「JMS RA接続の保護」を参照してください。

Oracle GlassFish Serverでの接続の遅延登録のサポート

Oracle GlassFish Serverはトランザクションにおける接続の遅延登録をサポートしています。

Oracle GlassFish Serverを管理する場合の制限および考慮点

次の項では、Oracle GlassFish ServerでJMS RAをデプロイする場合の制限および考慮点を説明します。

- GlassfishのXAResourceタイムアウト値は、デフォルトでは30秒で、トランザクション・タイムアウトからは独立しています。これより長いXAResourceタイムアウトが必要な場合、Glassfishのシステム・プロパティserver-config.transaction-service.property.xaresource-txn-timeoutをトランザクション・タイムアウト値と同じ値に構成する必要があります。

- GlassFish 3.1.xでは、アウトバウンドMDB接続がロールバックされたトランザクションに関連付けられたままの場合に既知の問題があります。
アプリケーションがXA対応MDBのonMessageメソッド内で、javax.ejb.MessageDrivenContext.setRollbackOnly()を使用する(つまり、XAでバックアップされたアウトバウンド接続ファクトリを使用する)場合、javax.transaction.xa.XAException: The resource already has an active association with a transactionというメッセージを受信する場合があります。ロールバックおよびそれに関連付けられている接続が別のトランザクションで再使用されるために接続プールから取得された後、この例外がスローされます。有償版のGlassFishを使用している場合は、OracleのGlassfishのサポート担当者にお問い合せください。オープン・ソース・コピーを所有している場合は、http://java.net/jira/browse/GLASSFISH-19094でパッチを入手できます。

- Glassfish 3.1クラスタ環境にJMS RAをデプロイしている場合、ClassNotFoundExceptionを受け取ることがあります。受け取る場合、wljmsra.rarファイルにパッケージされているwlthint3client.jarファイルを<Glassfish_install_dir>/libディレクトリにコピーします。詳細は、http://java.net/jira/browse/GLASSFISH-19111を参照してください。

- WARファイルのアンデプロイとデプロイを複数回行うと、Failed to generate class for weblogic.messaging.dispatcher.FastDispatcherImpl_12120_WLStubを受け取る場合があります。この問題はGlassFish serverを再起動することで回避できます。Oracle GlassFish Server 3.1ソフトウェアに関する既知の問題および使用可能な回避策の詳細は、http://docs.oracle.com/cd/E26576_01/doc.312/e24939/release-notes.htmを参照してください。

Oracle GlassFish Serverの参考資料

この項では、Oracle GlassFish Serverの参照ドキュメントへのリンクを示します。

- GlassFishのダウンロード: http://glassfish.java.net/public/downloadsindex.html#top

- http://docs.oracle.com/cd/E18930_01/html/821-2432/index.html

5 メッセージの消費の理解

この章では、WebLogic Server 12.1.3において、外部アプリケーション・サーバーでWebLogic JMSメッセージをインバウンド・メッセージとして非同期に消費するためのMDBを構成するように、JMS RAのra.xmlファイルを構成する方法について説明します。

この章には次の項が含まれます:

- インバウンド・メッセージを消費するためのMDBの構成

- 詳細なWebLogic JMSリソースの構成

- インバウンド通信のベスト・プラクティス

インバウンド・メッセージを消費するためのMDBの構成

WebLogic宛先からのメッセージを非同期に消費するためのMDBを必要とするアプリケーションでは、JMS RAのインバウンド実装を使用します。MDBの動作は、アプリケーションをデプロイする前に、次のファイルのプロパティ値を構成することによって決定されます。

- ra.xmlファイルでのinbound-resourceadapterプロパティの構成

- ejb-jar.xmlファイルでのactivation-configプロパティの構成

- スレッド管理

ra.xmlファイルでのinbound-resourceadapterプロパティの構成

次の項では、ra.xmlファイルでインバウンド構成のinbound-resourceadapterプロパティを定義する方法について説明します。

- 必須のactivation-configプロパティ

- オプションのactivation-configプロパティ

- inbound-resourceadapterの構成例

必須のactivation-configプロパティ

必須のinbound-resourceadapterプロパティは、WebLogic Server環境にあるWebLogic JMSリソース・アダプタのra.xmlファイルで指定されます。詳細は、「WebLogic Server環境でのJMS RAの場所」を参照してください。

必須のJMSプロパティには次のものがあります。

- ConnectionFactory

- destination

- destinationType

ConnectionFactory、destinationおよびdestinationTypeの値は、ejb-jar.xmlファイルのactivation-configプロパティとして定義されます。また、ejb-jar.xmlで構成されたJNDI名は、connection-definitionおよびadminobject要素のJMS RA値に割り当てられたJNDI名にマッピングする必要があります。参照:

- ejb-jar.xmlファイルでのactivation-configプロパティの構成

- JMS RA接続ファクトリのプロパティの構成

- 宛先およびネーミング・コンテキストの構成

オプションのactivation-configプロパティ

JMS RAでは、その他多数のactivation-configプロパティがサポートされています。詳細は、「ejb-jar.xmlファイルでのactivation-configプロパティの構成」および「JMS RAのインバウンド・プロパティ」を参照してください。

inbound-resourceadapterの構成例

次のコード例は、inbound-resourceadapter構成を示しています。

例5-1 inbound-resourceadapterの構成例

. . .
<inbound-resourceadapter>
<messageadapter>
<messagelistener>
<messagelistener-type>
javax.jms.MessageListener
</messagelistener-type>
<activationspec>
<activationspec-class>
weblogic.jms.ra.ActivationSpecImpl
</activationspec-class>
<required-config-property>
<config-property-name>ConnectionFactory</config-property-name>
</required-config-property>
<required-config-property>
<config-property-name>Destination</config-property-name>
</required-config-property>
<required-config-property>
<config-property-name>DestinationType</config-property-name>
</required-config-property>
</activationspec>
</messagelistener>
</messageadapter>
</inbound-resourceadapter>
. . .

ejb-jar.xmlファイルでのactivation-configプロパティの構成

次の項では、ejb-jar.xmlファイルでactivation-configプロパティを構成する方法について説明します。

- ejb-jar.xmlファイルと注釈

- ejb-jar.xmlファイルでのオプションのactivation-configプロパティの構成

- JMS RA activation-configプロパティを含むejb-jar.xmlファイルの例

ejb-jar.xmlファイルと注釈

ejb-jar.xmlの要素については、http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsdでスキーマを参照してください。

EJB 3.0以降、ejb-jar.xmlはオプションです。注釈を使用すると、ディスクリプタ要素のかわりにメタデータを宣言できます。詳細は、『Oracle Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanの開発』のEJB 3.1に準拠したMDBの使用に関する項を参照してください。

ejb-jar.xmlファイルでの必須のactivation-configプロパティの構成

ra.xmlのinbound-resourceadapterのすべてのrequired-config-propertyプロパティに、activation-config-propertyプロパティを構成する必要があります。

一般的な必須のJMSプロパティには次のものがあります。

- ConnectionFactory: JMSコネクタの接続ファクトリのJNDIロケーション。

- destination: JMSコネクタの宛先のJNDIロケーション。

- destinationTypeは、次のいずれかのタイプになります。

- javax.jms.Topic

- javax.jms.Queue

- javax.jms.Destination

また、MDBアプリケーションがオプションのactivation-configプロパティを使用している場合は、外部アプリケーション・サーバーで、これらのオプションのactivation-configプロパティがra.xmlにrequired-config-property要素として定義されている必要がある場合があります。アプリケーション・サーバーのベンダーが提供するドキュメントで確認してください。

キューの構成例

次の例は、キューの構成のactivation-configプロパティを示しています。この例では、MDBは、JNDI名wljmsra/xacfを持つ接続ファクトリからの接続を使用して、JNDI名wljmsra/queueを持つキューからメッセージをデキューします。

. . .
<activation-config-property>
<activation-config-property-name>
ConnectionFactory
</activation-config-property-name>
<activation-config-property-value>
wljmsra/xacf
</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>
Destination
</activation-config-property-name>
<activation-config-property-value>
wljmsra/queue
</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>
DestinationType
</activation-config-property-name>
<activation-config-property-value>
javax.jms.Queue
</activation-config-property-value>
</activation-config-property>
. . .

トピックの構成例

次の例は、トピックの構成のactivation-configプロパティを示しています。この例では、MDBは、JNDI名wljmsra/txacf1を持つ接続ファクトリからの接続を使用して、JNDI名wljmsra/pdtopic1を持つトピックからメッセージをデキューします。

. . .
<activation-config-property>
<activation-config-property-name>
ConnectionFactory
</activation-config-property-name>
<activation-config-property-value>
wljmsra/txacf1
</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>
Destination
</activation-config-property-name>
<activation-config-property-value>
wljmsra/pdtopic1
</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>
DestinationType
</activation-config-property-name>
<activation-config-property-value>
javax.jms.Topic
</activation-config-property-value>
</activation-config-property>
. . .

ejb-jar.xmlファイルでのオプションのactivation-configプロパティの構成

使用環境に合った適切なMDB動作を実行するのに必要な追加プロパティを構成します。詳細は、「JMS RAのインバウンド・プロパティ」を参照してください。

JMS RA activation-configプロパティを含むejb-jar.xmlファイルの例

次の例は、JMS RA activation-configプロパティを含むejb-jar.xmlファイルを示しています。

例5-2 JMS RA activation-configプロパティを含むejb-jar.xmlファイル

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee">
<display-name>WebLogic RA Demo</display-name>
<enterprise-beans>
<message-driven>
<display-name>My queue MDB</display-name>
<ejb-name>queueMDB</ejb-name>
<ejb-class>jms.ra.DisQueueMDB</ejb-class>
<messaging-type>javax.jms.MessageListener</messaging-type>
<transaction-type>Container</transaction-type>
<activation-config>
<activation-config-property>
<activation-config-property-name>
ConnectionFactory
</activation-config-property-name>
<activation-config-property-value>
java:sample/factory
</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>
Destination
</activation-config-property-name>
<activation-config-property-value>
java:sample/destination/queue
</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>
DestinationType
</activation-config-property-name>
<activation-config-property-value>
javax.jms.Queue
</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>UserName</activation-config-property-name>
<activation-config-property-value></activation-config-property-value>                </activation-config-property>
<activation-config-property>
<activation-config-property-name>Password</activation-config-property-name>
<activation-config-property-value></activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>ClientId</activation-config-property-name>
<activation-config-property-value>queueMDB</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>MessageSelector</activation-config-property-name>
<activation-config-property-value></activation-config-property-value>
</activation-config-property>
</activation-config>
</message-driven>
. . .
</message-driven>
</enterprise-beans>
. . .
</ejb-jar>

その他のejb-xml.jarファイルの例については、WebLogic Server環境のリソース・アダプタの例を確認してください。

スレッド管理

JMS RAでは、インバウンド・メッセージを消費するMDBによって使用される宛先のスレッドを管理するために、3つのプロパティを提供しています。

- minListenerThreads: 個々の物理宛先に対して作成されるリスナー・スレッドの最小数。「minListenerThreads」を参照してください。

- maxTotalListenerThreads: 宛先に使用できるリスナー・スレッドの最大数。「maxTotalListenerThreads」を参照してください。

- maxListenerThreads: 宛先内の個々の物理宛先に対して作成されるリスナー・スレッドの最大数。「maxListenerThreads」を参照してください。

物理宛先の最大スレッドの設定

この項では、宛先のスレッドの最大数(maxListenerThreads)を構成する方法について説明します。

- キュー: 2つ以上のスレッドを使用すると、メッセージが消費される速度の向上に役立つ場合があります。

- トピック: この値は常に1に設定する必要があります。各リスナー・スレッドは、独自のセッションとTopicSubscriberを取得します。

- 恒久サブスクライバ: 同じサブスクリプション名のサブスクライバを複数持つとエラーになります。

- 非恒久サブスクライバ: この値は常に1に設定する必要があります。スレッドを増加すると、サブスクライバが増加し、処理する各メッセージのコピーも増加することになります。

分散宛先の最大スレッドの設定

maxTotalListenerThreadsプロパティを使用すると、分散宛先のスレッドの追加の処理を制限したり指定することができます。

- maxTotalListenerThreadsの値が関連付けられている分散宛先内の物理宛先の数より小さい場合、JMS RAは、分散宛先内の物理宛先の数と同じ値を使用し、警告メッセージを記録します。

- 外部アプリケーション・サーバーが分散宛先内の物理宛先の数以上のスレッドを指定できない場合、JMS RAは警告メッセージを記録します。

- JMS RAでは、スレッドを割り当てるための公平性ポリシーを実装しているので、maxListenerThreadsより小さい数が現在設定され、より多くのスレッドを必要としている個々の物理宛先は、同じ分散宛先内の他の物理宛先(少なくともさらに2つ多いスレッドを持つ)からスレッドを再割当てできます。この公平性ポリシーは、外部アプリケーション・サーバーのWorkManager (JMS RAによるmaxTotalListenerThreadsでの新規スレッドの追加リクエストを許可しない)からは独立しています。
スレッド不足の決定および既存のスレッドのみの転送の両方が、メッセージの処理中(onMessageのコール中)に行われるため、ある宛先から別の宛先へのスレッドの再割当てのプロセスには時間がかかります。2つのスレッドが含まれているため、転送プロセスは2つ分のonMessage処理時間がかかります。

例外キューの使用

JMS RAを使用すると、ユーザーはインバウンド通信の例外キューを構成して、インバウンドMDBキューのポイズン・メッセージを処理できます。UseExceptionQueue=trueの場合、他の場合には破棄されてしまうメッセージが例外キューに送信されます。メッセージは通常、maxDeliveryCount値を超えた場合に、例外キューに送信されます。「maxDeliveryCount」を参照してください。

メッセージは、次のルールを使用して例外キューへ処理されます。

- メッセージは、例外キューに直接設定されません。

- 同じタイプの新しいメッセージが作成されます。

- 元のメッセージのプロパティおよびボディが新しいメッセージにコピーされます。
リソース・プロバイダによって元のヘッダーがオーバーライドされないようにするために、それぞれがGJRA_CopyOfJMS{Header}プロパティにコピーされます。javax.jms.Destinationは有効なプロパティ・タイプではないため、各宛先ヘッダーは説明メッセージに変換されます。注意: JMSX*プロパティは変換されません。たとえば、JMSXDeliveryCountのようになります。

注意:
コピー・プロセスの一部が失敗した場合、次のルールを使用して処理は続行されます。Bytes、MapおよびStreamメッセージ・タイプでは、メッセージ・ボディの一部がコピーされ、残りはコピーされないことがあります。

- コピー・プロセスが100%成功したら、値trueが設定されたブール・プロパティGJRA_CopySuccessfulが追加されます。

- メッセージが配信されなかった理由を示す、GJRA_DeliveryFailureReasonという文字列プロパティが追加されます。

- 配信障害の直前にMDBのonMessageメソッドが例外を生成した場合、例外情報を含むGJRA_onMessageExceptionsという文字列プロパティが追加されます。

- 元のメッセージのコピーが例外キューに送信されます。

注意:
例外キューへの元のメッセージのコピーの送信は、1回のみ試行されます。この試行に失敗すると、メッセージは例外キューに配置されることなく破棄されます。詳細は、includeBodiesInExceptionQueueを参照してください。

プライマリ宛先に使用される接続ファクトリは、例外キューに対しても使用されます。(Destinationプロパティで指定された)プライマリ宛先がトピックの場合、接続ファクトリはキューとトピックの両方をサポートしている必要があります。たとえば、<connectionfactory-interface>要素はjavax.jms.ConnectionFactoryまたはjavax.jms.XAConnectionFactoryのいずれかである必要があります。

userNameおよびpasswordの設定

userNameおよびpasswordプロパティを使用すると、リソース・プロバイダに認証パラメータを渡すことができます。これらのプロパティのどちらも設定されていない場合、このMDBのインバウンド・メッセージ処理に使用される接続が、引数なしのcreateConnectionメソッドを使用して作成されます。これらのいずれかまたは両方が設定されている場合、userNameまたはpasswordプロパティ、あるいはその両方が、ユーザーまたはパスワードの引数としてcreateConnectionメソッドに渡されます。これらのいずれか1つのみが設定されている場合、createConnection引数リストのそのプロパティ値にかわってnullが使用されます。

詳細なWebLogic JMSリソースの構成

次の項では、インバウンド・メッセージに対して詳細なメッセージ処理を構成する方法について説明します。

- JMS RAと共有可能なサブスクリプション

- 順序付けメッセージ処理の使用

- 分散トピックから消費する場合の設計戦略

- スタンドアロン(非分散)トピックからの消費

JMS RAと共有可能なサブスクリプション

JMS RAは、インバウンド・メッセージの処理時に、SHARABLEサブスクリプション共有ポリシーとUNRESTRICTEDクライアントIDポリシーを使用して、構成された接続ファクトリの設定をオーバーライドします。JMS RAのMDBはサブスクリプション名を生成しないため、恒久サブスクリプションにはsubscriptionNameを指定する必要があります。サブスクリプションは次の場合に共有されます。

- 非恒久: 同じ分散トピック上のコンシューマは、同じclientIDとmessageSelectorを持つ場合にのみ、非恒久サブスクリプションを共有できます。

- 恒久: 同じ分散トピック上のコンシューマは、同じclientID、メッセージ・セレクタおよびsubscriptionNameを持つ場合にのみ、恒久サブスクリプションを共有できます。

MDBが着信メッセージを消費していることを確認するために、常にclientIdを構成します。たとえば、次のように構成します。

. . .
<activation-config>
<activation-config-property>

<activation-config-property-name>clientId</activation-config-property-name>
<activation-config-property-value>myMDB</activation-config-property-value>
</activation-config-property>
</activation-config>
. . .

詳細は、Oracle Fusion Middleware Oracle WebLogic Server JMSリソースの管理の共有サブスクリプションの構成に関する項を参照してください。

順序付けメッセージ処理の使用

アプリケーションでサブスクリプション・メッセージの単一スレッド式処理が必要な場合は、WebLogic JMSの順序単位(UOO)処理を使用するようアプリケーションを構成します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JMSアプリケーションの開発.』の順序単位のメッセージの使用に関する項を参照してください。

分散トピックから消費する場合の設計戦略

次の項では、分散トピックを使用して高可用性アプリケーションを開発する際に使用できる設計戦略について説明します。

- レプリケートされた分散トピックとパーティション化された分散トピック

- 分散トピックのOne-Copy-Per-Server設計戦略

- 分散トピックのOne-Copy-Per-Application設計戦略

レプリケートされた分散トピックとパーティション化された分散トピック

この項では、レプリケートされた分散トピックとパーティション化された分散トピック(どちらもインバウンド・メッセージの消費でサポートされている)の概要について説明します。

- レプリケートされた分散トピック: すべての物理トピック・メンバーが送信された各メッセージを受信します。メッセージがいずれかの物理トピック・メンバーに届くと、そのメッセージのコピーが同じトピック内の他のメンバーに自動的に内部で転送されます。

- パーティション化された分散トピック: メッセージを受信する分散トピック・メンバーは、メッセージを認識するメンバーのみです。メッセージは他のメンバーには転送されず、他のメンバーのサブスクライバはメッセージのコピーを受信しません。着信メッセージは、JMS AffinityおよびLoad Balance属性を使用して、分散トピック・メンバー間でロード・バランシングできます。詳細は、Oracle Fusion Middleware Oracle WebLogic Server JMSリソースの管理のパーティション化された分散トピックのロード・バランシングに関する項を参照してください。

分散トピックのOne-Copy-Per-Application設計戦略

One-Copy-Per-Applicationは、使用可能なデフォルトの設計パターンで、次の特徴があります。

- 各アプリケーションが全体として(つまり、アプリケーションのすべてのインスタンスを一緒に)、DTにパブリッシュされた各メッセージのコピーを1つ受信します。つまり、各インスタンスはDTに送信されたメッセージのサブセットのみを受信します。

- クライアントIDポリシーはUNRESTRICTEDです。

- サブスクリプション共有ポリシーはSHARABLEです。

- サブスクライバが恒久の場合は、同じサブスクリプション名を使用します。

- すべてのコンシューマが同じトピック・インスタンス(またはDTのメンバー)にサブスクライブします。

One-Copy-Per-Applicationの実装

One-Copy-Per-Application設計戦略を実装するには、「One-Copy-Per-ApplicationのEJB構成の例」に示すように、activation-config要素にTopicMessageDistributionMode=One-Copy-Per-Applicationの値を持つ、ProviderPropertiesプロパティをEJBで指定する必要があります。

注意:
TopicMessageDistributionMode=One-Copy-Per-Serverを指定しない場合は、JMS RAではメッセージの重複を避けるために、デフォルトでTopicMessageDistributionMode=One-Copy-Per-Applicationに設定されます。

One-Copy-Per-ApplicationのEJB構成の例

ejb-jar.xmlファイルからの次のコード・スニペットは、One-Copy-Per-Applicationメッセージ処理を実装しています。

. . .
<mdb-resource-adapter>
<resource-adapter-mid>wljmsra</resource-adapter-mid>
<activation-config>
<activation-config-property>
<activation-config-property-name>ClientId</activation-config-property-name>
<activation-config-property-value>RDT2MDB</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>ProviderProperties</activation-config-property-name>
<activation-config-property-value>TopicMessageDistributionMode=One-Copy-Per-Application</activation-config-property-value>
</activation-config-property>
</activation-config>
</mdb-resource-adapter>

<!-- Mapping a Queue admin-object to the Resource-Adapter name -->
<resource-env-ref>
<resource-env-ref-name>jms/ResultTopic</resource-env-ref-name>
<jndi-name>wljmsra/rtopic1</jndi-name>
</resource-env-ref>

<!-- Mapping a Connection Factory to the Resource-Adapter name -->
<resource-ref>
<res-ref-name>jms/ResultXACFFactory</res-ref-name>
<jndi-name>wljmsra/xacf</jndi-name>
</resource-ref>
. . .

分散トピックのOne-Copy-Per-Server設計戦略

One-Copy-Per-Serverは、アプリケーションの各インスタンスが、トピックにパブリッシュされた各メッセージのコピーを1つ受信する設計パターンです。

One-Copy-Per-Serverの実装

One-Copy-Per-Server設計戦略を実装するには、次のことを行う必要があります。

- 外部サーバー・インスタンスの起動時に、weblogic.jms.ra.providers.wl.ServerIDプロパティを指定します。たとえば、-Dweblogic.jms.ra.providers.wl.ServerID=aUniqueIdForTheServerのように指定します。
ここで、aUniqueIdForTheServerは外部サーバーの一意の識別子です。

Oracle Glassfishの場合、asadminコマンドを使用して、このプロパティを構成できます。

asadmin> create-jvm-options --user myUsername --password myPassword --host localhost --port 4848 -Dweblogic.jms.ra.providers.wl.ServerID="aUniqueIdForTheServer"

- 「One-Copy-Per-ApplicationのEJB構成の例」に示すように、activation-config要素にTopicMessageDistributionMode=One-Copy-Per-Serverの値を持つ、ProviderPropertiesプロパティをEJBで指定します。

One-Copy-Per-Serverの例

ejb-jar.xmlファイルからの次のコード・スニペットは、One-Copy-Per-Serverメッセージ処理を実装しています。

. . .
<mdb-resource-adapter>
<resource-adapter-mid>wljmsra</resource-adapter-mid>
<activation-config>
<activation-config-property>
<activation-config-property-name>ClientId</activation-config-property-name>
<activation-config-property-value>RDTMDB</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>ProviderProperties</activation-config-property-name>
<activation-config-property-value>TopicMessageDistributionMode=One-Copy-Per-Server</activation-config-property-value>
</activation-config-property>
</activation-config>
</mdb-resource-adapter>
<!-- Mapping a Queue admin-object to the Resource-Adapter name -->
<resource-env-ref>
<resource-env-ref-name>jms/ResultTopic</resource-env-ref-name>
<jndi-name>wljmsra/rtopic1</jndi-name>
</resource-env-ref>
<!-- Mapping a Connection Factory to the Resource-Adapter name -->
<resource-ref>
<res-ref-name>jms/ResultXACFFactory</res-ref-name>
<jndi-name>wljmsra/xacf</jndi-name>
</resource-ref>
. . .

スタンドアロン(非分散)トピックからの消費

MDBアプリケーションをホストする各外部アプリケーション・サーバー・インスタンスでは、トピックが同じクラスタ内または異なるクラスタ内のどちらで実行されているかに関係なく、トピックに対してMDBプールが作成されます。N個のノードのMDBクラスタでは、N個のMDBプールが作成されます。各MDBプールはトピック上に個別のサブスクリプションを作成し、異なるMDBプールからのサブスクライバは同じサブスクリプションを共有しません。詳細は、「One-Copy-Per-Serverの実装」を参照してください。

インバウンド通信のベスト・プラクティス

この項では、インバウンド通信用のJMS RAのチューニングおよびベスト・プラクティスについて説明します。

- JMS RAで分散宛先メンバーより多いスレッドが割り当てられていることを確認します。

- トピックの使用時には、常にclientIDを構成します。JMS RAは、インバウンド・メッセージの処理時に、恒久サブスクライバまたは非恒久サブスクライバに対して構成されたclientIdを必要とする、SHARABLEサブスクリプション共有ポリシーを使用します。
clientIDが設定されていない場合、MDBは、外部アプリケーション・サーバー・ログに記録されたメッセージおよびエラー条件を受信しません。詳細は、「JMS RAと共有可能なサブスクリプション」を参照してください。

- キューの場合、maxListenerThreadsの値を2つ以上のスレッドに増やすと、メッセージが消費される速度が向上する可能性があります。

- JMS RAでは、共有可能な接続はサポートされていません。アプリケーションのJEEディスクリプタ(web.xml、ejb-jar.xml)の<resource-ref>要素を使用して、そのアプリケーションでルックアップして使用されるJMS接続ファクトリを識別する場合、<res-sharing-scope>子要素をunsharableに設定する必要があります。この要素のデフォルト値はsharableです。たとえば、次のように構成します。

. . .
<resource-ref>
<res-ref-name>jms/ReplyFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Application</res-auth>
<res-sharing-scope>unsharable</res-sharing-scope>
</resource-ref>

アプリケーションで@Resourceインジェクションが使用されている場合は、http://docs.oracle.com/javaee/6/api/javax/annotation/Resource.html#shareable%28%29を参照してください。

6 アウトバウンドJMSメッセージの送信

この章では、WebLogic Server 12.1.3において、JMS RAを使用してJMSメッセージを送信する方法について説明します。

この章には次の項が含まれます:

- JMS RAアウトバウンド通信の基本

- アウトバウンド接続の定義

- JMS RAアウトバウンド接続の制限

- アウトバウンド・メッセージをロード・バランシングする方法の理解

- アウトバウンド通信のトランザクション・サポートの構成

- アウトバウンド通信の認証の構成

JMS RAアウトバウンド通信の基本

JMS RAはWebLogic JMSクライアントのシン・ラッパーです。ユーザーは、接続クライアントIDをRESTRICTED(制限付き)またはUNRESTRICTED(制限なし)のいずれかに、サブスクリプションをSharable(共有可能な)またはExclusive(排他的)のいずれかに設定するよう選択できます。

アウトバウンド接続の定義

JMS RAは事前定義された多くのJMS接続ファクトリを提供します。各JMS接続ファクトリ・インタフェースには、独自の<connection-definition>要素があります。各<connection-definition>では、JCA仕様によって要求されるクラスおよびインタフェースと、追加の構成プロパティを定義します。

JMS RA接続ファクトリ

JMS RAでは次の接続ファクトリがサポートされます。

- WebLogic JMS non-XA ConnectionFactory

- WebLogic JMS non-XA QueueConnectionFactory

- WebLogic JMS non-XA TopicConnectionFactory

- WebLogic JMS XA ConnectionFactory

- WebLogic JMS XA QueueConnectionFactory

- WebLogic JMS XA TopicConnectionFactory

詳細は、「JMS RA ra.xmlファイルの例」のra.xmlファイルの<outbound-resourceadapter>要素を参照してください。

JMS RA接続ファクトリのプロパティの構成

JMS RAでは、ra.xmlファイルまたは、JMS RAがデプロイされている外部アプリケーション・サーバーのJEEコンテナに設定できる追加の構成プロパティがサポートされています。詳細は、「JMS RAのアウトバウンドの構成プロパティ」を参照してください。次に、WebLogic XA接続ファクトリと追加の構成プロパティの例を示します。

例6-1 WebLogic XA接続ファクトリの接続定義の例

. . .
<connection-definition>
<managedconnectionfactory-class>
weblogic.jms.ra.WLManagedXAConnectionFactory
</managedconnectionfactory-class>
<config-property>
<config-property-name>LoggerName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>weblogic.jms.ra</config-property-value>
</config-property>
<config-property>
<config-property-name>LogLevel</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>FINEST</config-property-value>
</config-property>
<config-property>
<config-property-name>group</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<config-property-name>rpResourceLocation</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<config-property-name>autoCloseSession</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>false</config-property-value>
</config-property>
<connectionfactory-interface>
weblogic.jms.ra.WLXAConnectionFactoryInterface
</connectionfactory-interface>
<connectionfactory-impl-class>
weblogic.jms.ra.WLXAConnectionFactory
</connectionfactory-impl-class>
<connection-interface>
weblogic.jms.ra.WLXAConnectionInterface
</connection-interface>
<connection-impl-class>
weblogic.jms.ra.WLXAConnection
</connection-impl-class>
</connection-definition>
. . .

JMS RAアウトバウンド接続の制限

接続管理の制限を次に示します。

- WebLogic JMSクライアントの自動フェイルオーバー機能を使用すると、サーバーまたはネットワークに障害が発生した場合、JMSクライアントはクラスタ内の使用可能な別のサーバー・インスタンスに自動的に再接続できるようになります。この機能によって、管理対象接続に最適なITMを関連付けることができるJMS RAの機能が妨げられます。JMS RAはこの機能を自動的に無効化し、アプリケーション・コードが自動的な再接続をプログラムによって有効化しようとする場合に、例外をスローします。

- UPおよびDOWNイベントは、現在のところWebLogicインスタンス・レベルでサポートされていません。また、特定のWebLogicインスタンスへの接続を作成することはできません。接続不良が再使用される前に、パージ中のJMS RA接続ではそれらが即時に識別されない可能性があるため、これにより、接続不良の使用が繰り返されます。

- 現在のところUPがWebLogicインスタンス・レベルでサポートされていないため、JMS RAでは接続のリバランスはサポートされません。

- JMS RAアウトバウンドの実装では、アウトバウンド・アプリケーションが通信しているWebLogicクラスタのサーバー・インスタンスのUPまたはDOWNイベントは認識されません。この制限のため、次のようなことが発生します。

- 接続不良が再使用される前に、パージ中のJMS RA接続ではそれが即時に識別されない可能性があるため、接続不良の使用が繰り返される場合があります。

- JMS RAでは、接続の自動リバランスは行われません。

アウトバウンド・メッセージをロード・バランシングする方法の理解

WebLogicクラスタは、同時に動作し、連携して高度なスケーラビリティと信頼性を実現する複数のWebLogic Serverインスタンスで構成されます。JMS分散宛先には通常、複数のサーバー・インスタンスに分散されたメンバー・セットが含まれており、各メンバーは個々のJMSサーバー・インスタンスでホストされています。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverクラスタの管理』のWebLogic Serverクラスタリングの理解に関する項を参照してください。

次の項では、JMS RAによってWebLogic JMSアウトバウンド通信をロード・バランシングする方法について説明します。

- 接続ファクトリを使用したRMIロード・バランシング

- 分散宛先へのメッセージのロード・バランシング

接続ファクトリを使用したRMIロード・バランシング

JMS RAでは、異なるWebLogic Serverインスタンスを指す接続およびセッションを作成するために、WebLogic JMS接続ファクトリを使用したRMIオブジェクトのロード・バランシングがサポートされています。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverクラスタの管理』のクラスタでのロード・バランシングに関する項を参照してください。

分散宛先へのメッセージのロード・バランシング

WebLogic分散宛先(DD)へのロード・バランシングは、追加構成を指定せずに自動的にサポートされています。DDは、JMS RAからは単一の論理的な宛先にみえます。分散宛先とそのメンバーの両方が、WebLogic JNDIに通知されます。JMS RAの管理対象接続が指すインスタンスとは異なるWebLogic Serverインスタンス上の分散宛先のメンバーにメッセージをロード・バランシングする場合、管理対象接続の介在トランザクション・マネージャ(ITM)は、必要に応じて、XAのコールを別のWebLogicインスタンス上の対応するトランザクション・コーディネータに透過的に引き継ぐことによって、そのインスタンスに送信されたメッセージを登録できます。

注意:
恒久サブスクリプションの作成、使用およびサブスクライブ解除を行う場合は、個々の分散トピック・メンバーを参照する必要があります。

アウトバウンド通信のトランザクション・サポートの構成

JMS RAは、JCA標準に従って、WebLogic JMSを使用したアプリケーションに対するアウトバウンドXA機能を提供します。詳細は、「アウトバウンド通信のトランザクション・サポート」を参照してください。

アウトバウンド通信の認証の構成

ra.xmlファイルでauthentication-mechanism要素を構成します。詳細は、「JCAセキュリティ」を参照してください。

7 宛先およびネーミング・コンテキストの構成

この章では、WebLogic Server 12.1.3においてインバウンドとアウトバウンド通信の宛先およびネーミング・コンテキストを定義するためのadminobject要素の構成について説明します。

この章には次の項が含まれます:

- コンテキストadminobjectオブジェクト

- 自動宛先ラッピングの使用

- 宛先adminobjects

- adminobject Stanzaの例

コンテキストadminobjectオブジェクト

コンテキストadminobjectsは、自動宛先ラッピングを動的に使用してキューとトピックをルックアップするために使用されます。詳細は「自動宛先ラッピングの使用」を参照してください。

自動宛先ラッピングを使用すると、アプリケーションはWebLogic JNDIコンテキストを表すアプリケーション・サーバーのJNDIに<admin-object>をバインドできます。次に、アプリケーションは、このWebLogic JNDIコンテキストをルックアップし、JMS宛先の名前で、WebLogic JNDI内をルックアップできます。これにより、アプリケーション・サーバー内で1つの<admin-object>のみを構成すればよくなるので、大量の宛先を持つアプリケーションの構成が簡略化されます。

次の要素を使用して、コンテキストadminobjectを定義します。

- <adminobject-interface>: weblogic.jms.ra.WLDestinationContextInterfaceを使用します

- <adminobject-class>: weblogic.jms.ra.WLDestinationContextを使用します。

<config-property>要素内で、次の構成プロパティを使用します。

- group: このadminobject定義に関連付けされるグループの名前です。

- rpContextLocation: コンテキストadmin-objectを使用して、JMS宛先をルックアップする方法を記述しているリソース・アダプタに情報を提供します。これは、connector:<connectorName>/の形式になります。

groupDefinition内で定義されているマクロが、このプロパティ値のコネクタの値に使用される場合があります。たとえば、グループ内で、マクロ{connectorName}の値がwlDevelopmentである場合、connector:wlDevelopment/のかわりに、connector:{connectorName}/が使用されます。詳細は、「groupDefinitionsを使用した高度なリソース・プロバイダの構成」を参照してください。

自動宛先ラッピングの使用

自動宛先ラッピングを使用すると、管理対象オブジェクトはプロバイダの宛先を自動的にラップでき、管理対象オブジェクトをプロバイダの宛先ごとに作成する必要がなくなり、管理対象オブジェクトを宛先のJNDIに明示的にバインドします。1つのadminobjectがリソース・プロバイダごとに定義されるので、JNDIのURLを動的に構築して、このコンテキスト内の各宛先をアクセスできます。

アプリケーションは、JNDIにバインドされているJMS RA admin-objectsをルックアップします。これらのadmin-objectsはJMS宛先または宛先コンテキストを表す場合があります。JMS宛先として使用する場合は、JMS宛先ごとに1つのadmin-objectを定義する必要があります。アプリケーションが20個のJMS宛先を使用している場合には、個別のadmin-objectsを20個(各宛先に1つ)作成する必要があります。また、アプリケーションは、これらの20個のJMS宛先を定義して、それらのJEEディスクリプタにresource-env-referencesとしてマップする必要があります。

宛先コンテキストadmin-objectを使用すると、単一の宛先コンテキストを統合できます(つまり、JMSプロバイダとして機能するWebLogic Serverで任意の数のJMS宛先をルックアップするために使用されます)。アプリケーションは、宛先コンテキストに1つのresource-env-refマッピングを定義するでけでよくなります。アプリケーションは、宛先コンテキストをルックアップして、宛先にリモートのWebLogic JNDI名を追加します。

次のような場合、自動宛先ラッピングのよって構成が簡略化されます。

- デプロイメント時に、WebLogic Server JMS宛先を決めることができない。たとえば、JMS RAが、実行時にユーザーからソース宛先とターゲット宛先のみを入手している場合。

- アプリケーションが大量の宛先をアクセスする必要がある。これにより、リソース・プロバイダのすべての宛先に、JMS RA宛先の一致セットを構成する必要がなくなります。そうでない場合、アプリケーションで使用される前に、各リソース・プロバイダの宛先は構成済のadminobjectにマッピングされる要があります。

たとえば、WebLogic JMSサーバーを表すadminobjectは、外部のアプリケーション・サーバーでJNDI名myContextにバインドされます。JNDI名jms/barを持つWebLogic JMS宛先が、このWebLogic Server JNDIツリー内で構成されている場合、自動宛先ラッピングは外部サーバーのJNDIルックアップ内のmyContext/jms/barを使用します。

次に、キューの自動ラッピングの例を示します。

. . .
<adminobject-config location="myContext">
<adminobject-class>weblogic.jms.ra.WLDestinationContext</adminobject-class>
<config-property name="group" value="wls"/>
<config-property name="rpContextLocation" value="connector:{rp_name}/"/>
</adminobject-config>
. . .

ここで、rp_nameはra.xmlファイルで定義されているリソース・プロバイダの名前です。詳細は、「JMS RAのadminobjectの構成プロパティ」を参照してください。

アプリケーション内で、javax.naming.ContextとしてmyContextをルックアップします。

. . .
@Resource(mappedName="myContext")
private javax.naming.Context wljmsraContext;
. . .

これで、このコンテキストを使用してキュー宛先をルックアップできます。

. . .
Queue theMdbQueue = (Queue) wlraContext.lookup("com.oracle.jms.qa.myQ1");
. . .

宛先adminobject

次のように、JMSのキューとトピック用に作成できる、2種類のadminobjectオブジェクトがあります。

- キューの場合、<adminobject-class>: oracle.j2ee.ra.jms.generic.WLQueueAdmin

- トピックの場合、<adminobject-class>: oracle.j2ee.ra.jms.generic.WLTopicAdmin

adminobject Stanzaの例

. . .
<!-- Context admin object -->
<adminobject>
<adminobject-interface>weblogic.jms.ra.WLDestinationContextInterface</adminobject-interface>
<adminobject-class>weblogic.jms.ra.WLDestinationContext</adminobject-class>
<config-property>
<config-property-name>group</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<config-property-name>rpContextLocation</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<adminobject>

<!-- Queue admin object -->
<adminobject>
<adminobject-interface>weblogic.jms.ra.WLQueueAdminInterface</adminobject-interface>
<adminobject-class>weblogic.jms.ra.WLQueueAdmin</adminobject-class>
<config-property>
<config-property-name>group</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<<config-property>
<config-property-name>rpResourceLocation</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
</adminobject>

<!-- Topic admin object -->
<adminobject>
<adminobject-interface>weblogic.jms.ra.WLTopicAdminInterface</adminobject-interface>
<adminobject-class>weblogic.jms.ra.WLTopicAdmin</adminobject-class>
<config-property>
<config-property-name>group</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<config-property-name>rpResourceLocation</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
</adminobject>
. . .

8 リソース・プロバイダの理解

この章では、WebLogic Server 12.1.3のリソース・プロバイダの使用方法と構成方法について説明します。リソース・プロバイダでは、JMS RAによるWebLogic JMSプロバイダへの接続を可能にするJNDIプロパティを定義します。

この章には次の項が含まれます:

- 基本的なリソース・プロバイダの構成

- groupDefinitionsを使用した高度なリソース・プロバイダの構成

- リソース・プロバイダの構成例

基本的なリソース・プロバイダの構成

JMS RAは、resourceProviderDefintionsという名前のresource-adapter config-propertyを使用してJNDIプロパティを定義します。このプロパティはWebLogic JMSをアクセスするためにJMS RAによって使用されます。複数のリソース・プロバイダを構成できます。

注意:
resourceProviderDefinitionsを記述している場合、WebLogic Server JNDIのURLにカンマが使用されているときは、エスケープ文字「%」が必要になります。カンマはプロパティを区切るためのデリミタとしても使用されます。
たとえば、URLがt3://host:port,host2:port2の場合、portの後ろにカンマがあるために、JMS RAはURLの解析に失敗します。

この問題を回避するには、「%」を使用してこのカンマをエスケープします。たとえば、t3://host:port%,host2,portのようにします。

次の手順に従って、リソース・プロバイダを構成します。

1. resourceProviderDefinitionsをconfig-property-nameとして指定します。

<config-property-name>resourceProviderDefinitions</config-property-name>

2. java.lang.Stringをconfig-property-typeとして指定します。

<config-property-type>java.lang.String</config-property-type>

3. 次の名前/値ペアのパターンを使用して、リソース・プロバイダ用の特定のJNDIプロパティを定義します。

(RP_NAME: jndiEnv=property1=(value1,property2=value2,...))

ここで、

RP_NAMEはリソース・プロバイダのJNDIプロパティを定義するために使用される一意の名前であり、<connection-definition>要素と<adminobject>要素のrpResourceLocation config-propertyで使用されます。詳細は「アウトバウンドJMSメッセージの送信」を参照してください。

property1=value1,property2=value2,...は、名前/値ペアのカンマ区切りのリストで、リソース・プロバイダのJNDIプロパティを定義します。

注意:
定義された各リソース・プロバイダ(RP_NAME値)は、ra.xmlファイル内で一意である必要があります。

構成例については、「リソース・プロバイダの構成例」を参照してください。

groupDefinitionsを使用した高度なリソース・プロバイダの構成

JMS RAはgroupDefinitionsプロパティを使用して、リソース・プロバイダを構成するための高度な方法を提供します。これにより、接続ファクトリおよびadminobjectsの柔軟なアドレス解決が提供される一方で、互換性のあるメッセージング・オブジェクトのセットを作成できます。groupDefinitionsは次のコンポーネントに依存します。

- グループ: 接続ファクトリおよび関連付けられた宛先adminobjectsなどの互換性のあるメッセージング・オブジェクトのセット。

- マクロ: rpResourceLocation構成プロパティにかわって、接続ファクトリおよびadminobjects内で使用されるグループ・コンポーネント。

groupDefinitionsを構成するには、次の手順に従います。

1. groupDefinitionsをconfig-property-nameとして指定します。

<config-property-name>groupDefinitions</config-property-name>

2. java.lang.Stringをconfig-property-typeとして指定します。

<config-property-type>java.lang.String</config-property-type>

3. グループを定義するには、次のパターンを使用します。

<config-property-value>
GROUP_NAME: macro
</config-property-value

ここで、

GROUP_NAMEは、グループ構成を表すために使用される一意の名前です。

macroは、互換性のあるメッセージング・オブジェクトのセットを定義する、名前/値ペアのカンマ区切りのリストです。JMS RAでは、rpResourceLocation構成プロパティのかわりに、接続ファクトリおよびadminobjects内で、これらのペアが使用されます。

構成例については、「リソース・プロバイダの構成例」を参照してください。

リソース・プロバイダの構成例

次の項では、リソース・プロバイダの構成例を示します。2つのリソース・プロバイダ(rp1とrp2)が構成されます。2つのグループ(GroupAとGroupB)が構成されます。

例8-1 リソース・プロバイダの構成例

. . .
<config-property>
<config-property-name>resourceProviderDefinitions</config-property-name>
<config-property-type>java.lang.String</config-property-type>
// Example Configuration for two resource providers: rp1 and rp2
<config-property-value>
(rp1: jndiEnv=(java.naming.factory.initial=
weblogic.jms.WrappedInitialContextFactory,
java.naming.provider.url=t3://@@@HOST@@@:7002,
java.naming.security.principal=wxyzUser1,
java.naming.security.credentials=wxyzPass1))
(rp2: jndiEnv=(java.naming.factory.initial=
weblogic.jms.WrappedInitialContextFactory,
java.naming.provider.url=t3://anotherhost:8002,
java.naming.security.principal=wxyzUser1,
java.naming.security.credentials=wxyzPass1))
</config-property-value>
. . .
</config-property>
<config-property>
<config-property-name>groupDefinitions</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>
(GroupA:  connectorName=rp1,
cf=myCF,
xacf=myXACF,
topic1=myT1,
topic2=myT2,
queue1=myQ1,
queue2=myQ12)
(GroupB:  connectorName=rp2,
cf=example/cf,
xacf=example/xacf,
queue1=queue1,
queue2=queue2)
</config-property-value>
</config-property>
. . .

9 トランザクション処理の理解

この章では、外部アプリケーション・サーバーとWebLogic Server 12.1.3の間で相互運用するためにJMS RAを使用する場合のトランザクション処理およびリカバリについて説明します。

この章には次の項が含まれます:

- JMS RAのトランザクション・サポート

- トランザクションにおける接続の遅延登録

- WebLogicのクラスタ全体のリカバリ

JMS RAのトランザクション・サポート

サード・パーティ・アプリケーション・サーバーにおいては、JMSの2つの主要なユースケースがあります。1つは、ユーザーがJMSプロバイダと同期して対話するアウトバウンド通信です。2つ目は、ユーザーがJMSプロバイダと非同期に対話するインバウンド通信です(たとえば、メッセージドリブンBean (MDB)を介した)。

アウトバウンド通信のトランザクション・サポート

JMS RAは、JCA標準に従って、WebLogic JMSを使用したアプリケーションに対するアウトバウンドXA機能を提供します。詳細は、「transaction-support」を参照してください。

JMS RAの管理対象接続は、WebLogic JMSクライアント接続および、WebLogicクラスタ・メンバーを指すセッションを保持します。管理対象接続は、同じWebLogicクラスタ・メンバーを指す介在トランザクション・マネージャ(ITM)スタブも参照します。WebLogic ITMは、別のWebLogicインスタンスで発生するJMS操作を処理できますが、JMS操作およびITMを同じインスタンスの同じクラスタ・メンバーに配置するほうがより効率的です(ITMアフィニティ)。JMS RAの管理対象接続がグローバル・トランザクションに含まれている場合:

- GlassFishサーバー・インスタンスは、管理対象接続上でgetXAResource()メソッドをコールして、その操作をグローバル・トランザクションに登録します(リソース・アダプタとアプリケーション・サーバー間のJCA 1.6トランザクション規約による)。

- Cluster-wide Recoveryが有効な場合、介在トランザクション・マネージャは任意のXAコールを透過的に処理して、ITMアフィニティを維持するために適切なクラスタ・メンバー・インスタンスに転送します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JTAアプリケーションの開発』のクラスタ全体のリカバリに関する項を参照してください。

- 管理対象接続は対応するITMを指すXAResourceラッパーを戻します。

- このラッパーによって、ITMのXAResourceにXAのコールが引き継がれます。

インバウンド・トランザクションのトランザクション・サポート

インバウンドのユースケースでは、リソース・アダプタのインバウンド通信規約またはネイティブMDBコードのいずれかを実装することによって、メッセージが受信されます。

- リソース・アダプタの規約が使用される場合、リソース・アダプタはMDB宛先(WebLogic Server宛先)からメッセージを受信し、それらをMDBに配布します。多くの場合、リソース・アダプタは、メッセージを同時に受信するために、複数のワーカー・スレッドを生成します。各スレッドは、個別のエンドポイントと個別のWebLogic JMSセッションを使用します。メッセージ受信の操作をグローバル・トランザクションに登録する外部アプリケーション・サーバーの場合、JMSリソース・アダプタは、XAResourceラッパーを渡すMessageEndpointFactory createEndpoint(XAResource)メソッドを使用して、エンドポイントを作成します。このラッパーには、メッセージを受信しているWebLogic JMSセッションと同じWebLogic Serverインスタンスを指すITMスタブが含まれています。WebLogic宛先が分散宛先の場合、ワーカー・スレッドは宛先メンバー全体に均等に分散されます。

- ネイティブMBDが使用されている場合、アプリケーション・サーバーがメッセージを受信します。JMSリソース・アダプタを使用する場合の使用シナリオはアウトバウンドの使用と同じです。トランザクション管理についても同じです。

トランザクションにおける接続の遅延登録

一般に、アプリケーション・コンポーネントがトランザクションのコンテキストにおいて接続ハンドルをリクエストするとき、接続は自動的に、または積極的にトランザクションに登録されます。これは、接続が最終的に使用されずに不必要なオーバーヘッドを招く場合でも起こります。

遅延登録では、新しい接続は、それがトランザクションで実際に使用される場合にのみ(つまり、データがその接続を介して送信される場合にのみ)、トランザクションに登録されます。

アプリケーション環境で使用するには、JMS RAと外部アプリケーション・サーバーの両方が、この機能を使用できるように遅延登録をサポートする必要があります。

WebLogicのクラスタ全体のリカバリ

Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの「クラスタ: 構成: JTA」ページで「クラスタ全体の回復の有効化」属性を選択することで、クラスタのすべての介在トランザクション・マネージャにわたる分散トランザクションのクラスタ全体のトランザクション・リカバリを構成できます。

有効な場合、WebLogicクラスタ内の各介在トランザクション・マネージャは、クラスタ全体にわたるトランザクションの分散を認識します。これにより、各クラスタ・メンバー上の介在トランザクション・マネージャは、特定のXAコールを処理するか、または別のクラスタ・メンバーの適切な介在トランザクション・マネージャに転送するかを判断できます。

WebLogicのトランザクション処理の詳細は、「障害の管理の理解」および『Oracle Fusion Middleware Oracle WebLogic Server JTAアプリケーションの開発』のサード・パーティのトランザクション・マネージャによって管理されるトランザクションへの参加に関する項を参照してください。

10 障害の管理の理解

この章では、JMS RAがWebLogic Server 12.1.3および外部アプリケーション・サーバーの障害に対応する方法ついて説明します。

この章には次の項が含まれます:

- WebLogic Serverの障害

- WebLogic分散宛先メンバーの障害

- トランザクション・リカバリ

WebLogic Serverの障害

JMS RAは、例外リスナーおよびJMS操作を通じて接続障害を検出します。WebLogicインスタンス障害が検出されると、対応する接続およびセッションはクローズされ、新しい接続およびセッションが作成されます。障害が発生した接続は、再利用されるのを防ぐために接続プールからパージされます。

注意:
障害が発生したWebLogic Serverインスタンスが再起動されたり、新しいサーバー・インスタンスがクラスタに参加した場合、リソース・アダプタは、プール内の既存の接続を新しいサーバーまたは再起動されたインスタンスにロード・バランシングしません。

WebLogic分散宛先メンバーの障害

WebLogic分散宛先メンバーに障害が発生すると、JMS RAのインバウンドMDBコンテナは、既存の接続およびセッションをすべて閉じて、使用可能なメンバーへの新しい接続およびセッションを開きます。

- 障害が発生したメンバーがリストアされたり、新しいメンバーが追加された場合、JMS RAは、メッセージがすべての分散宛先メンバーに均等に分散されるように、ワークロードをリバランスします。JMSリソース・アダプタは、リバランスを実行するために、宛先メンバーのUPまたはDOWNイベントをリスニングします。Server Affinity=fasleおよびLoadBalancing=trueが必要です。

- すぐにリカバリできない障害については、アダプタはその障害をログに記録し、定期的に再試行します。

トランザクション・リカバリ

次の項では、トランザクションが完了する前に、外部アプリケーション・サーバーまたはWebLogic Serverが使用不可能になった場合のトランザクション・リカバリ・プロセスついて説明します。

- WebLogic Serverが使用不可能になった場合のトランザクション・リカバリ

- 外部サーバーが使用不可能になった場合のトランザクション・リカバリ

WebLogic Serverが使用不可能になった場合のトランザクション・リカバリ

次の項では、WebLogic Serverインスタンスが使用不可能な場合の、外部トランザクション・マネージャによって指示されたトランザクションの処理方法について説明します。

準備前の障害

トランザクションが準備される前に、サード・パーティ・トランザクション・マネージャによって指示されたトランザクションに参加するWebLogic Serverインスタンスが使用不可能になった場合、トランザクションは失われます。

準備後の障害

トランザクションが準備された後に、外部トランザクション・マネージャによって指示されたトランザクションに参加するWebLogic Serverインスタンスが使用不可能になった場合、結果はインダウト・トランザクションになります。

次のいずれかの状態になるまで、外部トランザクション・マネージャは定期的にトランザクションの再試行を続けます。

- トランザクションがタイムアウトになり、リソースがリカバリされる。

- 元のWebLogic Serverインスタンスが使用可能になり、トランザクションが解決される。

- WebLogic環境でクラスタ全体のリカバリがサポートされている場合、別のクラスタ・メンバー上の適切な介在トランザクション・マネージャ(ITM)に転送されると、トランザクションが解決される。詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JTAアプリケーションの開発』のクラスタ全体のリカバリに関する項、およびOracle Fusion Middleware Oracle WebLogic Server Java APIリファレンスの「InterposedTransactionManager」を参照してください。
外部トランザクション・マネージャが、同じXAResourceを使用してトランザクションを完了する場合、JMS RA XAResourceラッパーは、再試行されるたびに、ITMスタブをルックアップします。外部トランザクション・マネージャが、異なるXAResourceを使用してトランザクションを完了する場合、ライブ・インスタンス上のITMは、XAコールをターゲット・インスタンスに透過的に転送します。どちらの場合も、障害が発生したITMが再起動または移行のいずれかによってリストアされた場合のみ、トランザクションが完了します。

外部サーバーが使用不可能になった場合のトランザクションのリカバリ

外部サーバーが再起動されると、リカバリ・プロセスが始まります。Cluster-wide Recoveryが有効な場合、影響を受けたクラスタ化されたWebLogic ServerのITMは、recoverメソッドがコールされた際に発生したすべてのインダウト・トランザクションを戻します。各ITMは、それ自身でまたは責任のあるITMに転送することによって、すべてのインダウト・トランザクションに対してXAResourceのcommitまたはrollbackコールを処理します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JTAアプリケーションの開発』のクラスタ全体のリカバリに関する項を参照してください。

注意:
リカバリ・プロセスが成功するには、クラスタ内のすべてのITMをポーリングして、インダウト・トランザクションの完全なリストをコンパイルする必要があるため、クラスタ内の個々のITMすべてが使用可能である必要があります。

外部トランザクション・マネージャは、JMS RAによって提供されるXAResourceラッパーと対話します。XAResourceラッパーはXAコールをITMスタブに引き継ぎます。JMS RAは、標準のJMS APIと固有のWebLogic JMS拡張APIをクライアント・インタフェースとして使用します。外部サーバー内で実行されるアプリケーション(EJBやサーブレットなど)は、JMS RAラッパーを通じてJMS RAおよびWebLogic JMSと対話します。JMS操作のWebLogicクライアント・オブジェクトへの引き継ぎの他に、JMS RAラッパーは、適切なJMSコールを捕捉することによって、遅延登録およびトランザクション・ブランチの終了も行います。

WebLogicサービスの移行の理解

次の項では、WebLogicサービスの移行中のJMS RAの動作に関する情報を提供します。

WebLogic JMSサーバーが移行可能なターゲットを使用するように構成されている場合、サービスの移行が完了すると、JMS RAインスタンスは移行後のWebLogic JMSサービスに再接続します。

注意:
WebLogic JMSサービスの移行では、JMSサービスの高可用性が提供されますが、ロード・バランシングは提供されません。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverクラスタの管理』の移行可能サービスに関する項を参照してください。ロード・バランシングの詳細は、次を参照してください。

次の項では、JMSサービスの移行中のJMS RAによるインバウンドとアウトバウンドの通信の処理方法について説明します。

- インバウンド通信

- アウトバウンド通信

インバウンド通信

JMSサービスの移行中に、JMS RAは既存のWebLogic JMSの接続とセッションをクローズします。JMSサーバーとその分散宛先メンバーの移行が行われたWebLogic Serverインスタンスを指すように、新しい接続およびセッションが作成されます。

アウトバウンド通信

JMSサービスの移行中に、障害が発生したWebLogic Serverインスタンスの分散宛先メンバーは、使用可能なWebLogic Serverインスタンスに移行されます。JMS RAに関連付けられているWebLogic JMSクライアントは移行を検出し、JMS操作を移行後の新しい宛先メンバーにリダイレクトします。

11 JMS RA接続の保護

この章では、JMS RAおよびWebLogic Server 12.1.3のセキュリティに関する考慮事項について説明します。

この章には次の項が含まれます:

- JCAセキュリティ

- WebLogic JMSセキュリティ

- ユーザー名とパスワードの指定

- Oracleウォレットを使用した資格証明の保護

- ワイヤ通信の保護

JCAセキュリティ

JMS RAは、http://download.oracle.com/otn-pub/jcp/connector_architecture-1.6-fr-oth-JSpec/connector-1_6-final-spec.pdfにあるJava (tm) EE Connector Architectureバージョン1.6の仕様に記載されている、JCAセキュリティ契約に完全に準拠しています。

アウトバウンド通信の場合、ra.xmlファイルで、authentication-mechanism-type、credential-interfaceおよびreauthentication-supportを指定できます。たとえば、次のように構成します。

. . .
<outbound-resourceadapter>
. . .
<authentication-mechanism>
<authentication-mechanism-type>
BasicPassword
</authentication-mechanism-type>
<credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
</authentication-mechanism>
<reauthentication-support>false</reauthentication-support>
. . .
</outbound-resourceadapter>
. . .

WebLogic JMSセキュリティ

次の項では、WebLogic JMSセキュリティに関する情報を提供します。

- JMSセキュリティ・モデルの概要

- JMSリソースの保護

JMSセキュリティ・モデルの概要

WebLogic JMSでは、スレッドベースのセキュリティ・モデルが使用されます。スレッドのサブジェクトは、JNDIユーザー名および資格証明としてJNDIルックアップで確立されます。WebLogic JMSでは、サーバーで後から認証する際に使用されるのと同じサブジェクトの下の同じスレッド内で、関連するすべての操作が実行されると想定しています。JMS接続の作成に使用されるユーザー名とパスワードは、認証フェーズでは無視されます。

JMSリソースの保護

サービスまたはアプリケーションとしてデプロイされているJMSリソースを保護できます。JMS宛先を保護するには、すべての宛先(JMSキューとJMSトピック)に対して、グループとしてまたは個々の宛先(JMSキューまたはJMSトピック)として、JMSサーバー上にセキュリティ・ポリシーおよびセキュリティ・ロールを作成します。詳細は、Oracle Fusion Middleware Oracle WebLogic Serverの役割とポリシーを使用したリソースの保護のJava Messaging Service (JMS)リソースに関する項を参照してください。

ユーザー名とパスワードの指定

ユーザー名とパスワードを指定するには、次の4つの方法があります。

- JCAコンテナを使用したインバウンド接続のユーザー名とパスワードの指定

- JNDIを使用したインバウンド接続のユーザー名とパスワードの指定

- 接続ファクトリを使用したインバウンド接続のユーザー名とパスワードの指定

- アウトバウンド接続のユーザー名とパスワードの指定

可能な場合、ホスト・アプリケーション・サーバーのJCAコンテナを使用することをお薦めします。ほとんどのベンダーが、セキュアなメソッドを使用して資格証明を動的に設定する方法を提供するJCAコンテナを提供しています。その他のメソッドでは、通常、資格証明はクリア・テキストで格納されます。資格証明を暗号化しないメソッドを選択した場合は、Oracleウォレットを使用してそれらを保護します。詳細は、「Oracleウォレットを使用した資格証明の保護」を参照してください。

JCAコンテナを使用したインバウンド接続のユーザー名とパスワードの指定

アプリケーションは、インバウンドのリソース・アダプタのactivation-specで、ユーザー名とパスワードを指定できます。activation specは、外部アプリケーション・サーバーのJCAコンテナによってJMS RAに渡されます。

外部アプリケーション・サーバーのJCAコンテナを使用して、ユーザー名とパスワードを指定する方法の詳細は、「Oracle GlassFish ServerでのJMS RAの管理」を参照してください。

JNDIを使用したインバウンド接続のユーザー名とパスワードの指定

次に示すように、ユーザー名とパスワードを含めるように、resourceProviderDefinitionsのjndiEnvプロパティを構成できます。

<config-property-name>resourceProviderDefinitions</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>
(weblogicAdmin: jndiEnv=(java.naming.factory.initial=weblogic.jms.WrappedInitialContextFactory,
java.naming.provider.url='t3://host:port',
java.naming.security.principal=xxxx,
java.naming.security.credentials=yyyy))
</config-property-value>
</config-property>

詳細は、「資格証明を設定するためのJNDIの構成例」を参照してください。

接続ファクトリを使用したインバウンド接続のユーザー名とパスワードの指定

JMS RAでは、JNDIの新しい初期コンテキスト・ファクトリweblogic.jms.WrappedInitialContextFactoryを使用したセキュリティ・モデルに基づく接続が提供されるため、外部アプリケーション・サーバーとのセキュリティの相互運用性が簡略化されます。生成されるサブジェクトは、次のルールを使用して決定されます。

- サブジェクトは、接続ユーザー名とパスワードを使用して作成された各接続に関連付けられています。

- ユーザー名とパスワードを指定せずに接続が作成された場合、JNDIのユーザー名とパスワードが使用されます。

- 後続のすべてのJMS操作では、スレッド上にあるサブジェクトに関係なく、接続の作成コールで生成されたサブジェクトが使用されます。

アウトバウンド接続のユーザー名とパスワードの指定

アウトバウンド接続の場合、createConnection(java.lang.String, java.lang.String)を使用できます。

JMS RAでは、アウトバウンド接続用のユーザー名とパスワードを実装するための構成属性は提供されていません。アウトバウンド接続の保護に関する詳細は、「ワイヤ通信の保護」を参照してください。

一部の外部アプリケーション・サーバーでは、ドメイン間でのセキュアな資格証明が提供されている場合があります。その場合、詳細はベンダーのドキュメントを参照してください。

Oracleウォレットを使用した資格証明の保護

Oracleウォレットでは、複数のドメイン間で資格証明を保護するための単純でわかりやすいメソッドが提供されています。これにより、個々の資格証明を変更せずにウォレットを更新することによって、資格証明を更新できます。

資格証明を保護するには、次のことを行う必要があります。

- ウォレット・ファイルを作成し、JMS RA暗号化ユーティリティを使用して必要な資格証明を追加する。このステップにより、エイリアスを保護された資格証明にマッピングする指定された場所に、cwallet.ssoファイルが作成されます。詳細は、「wljmsra暗号化ユーティリティの使用」を参照してください。

- JMS RAのデプロイメント・ディスクリプタまたは接続プール構成のエイリアスを指定する。

- JMS RAのデプロイメント・ディスクリプタまたは接続プール構成のcwallet.ssoファイルの場所を指定する。

資格証明を設定するためのJNDIの構成例

次の表は、JMS RA JNDI環境プロパティの設定方法の例を示しています。

表11-1 資格証明を設定するためのJNDIプロパティ

JNDIの設定

動作

java.naming.security.principal=principal

java.naming.security.credentials=credentials

JMS RAの実行時には、WebLogic Server宛先にアクセスするために、principalとcredentialsの値が使用されます。

java.naming.security.principal=principal

java.naming.security.credentials=->alias

weblogic.jms.walletDir=dirctory

JMS RAの実行時には、ユーザー名としてprincipalの値が使用され、directoryの値によって指定されたディレクトリにあるcwallet.ssoファイルに格納されているパスワードを取得および使用するために、aliasの値が使用されます。

java.naming.security.principal=->alias1

java.naming.security.credentials=->alias2

weblogic.jms.walletDir=dirctory

JMS RAの実行時には、ユーザー名を取得および使用するために、alias1の値が使用され、directoryの値によって指定されたディレクトリにあるcwallet.ssoファイルに格納されているパスワードを取得および使用するために、alias2の値が使用されます。

java.naming.security.principal=->alias

java.naming.security.credentials=->

weblogic.jms.walletDir=dirctory

JMS RAの実行時には、ユーザー名と、directoryの値によって指定されたディレクトリにあるcwallet.ssoファイルに格納されているパスワードを取得および使用するために、aliasの値が使用されます。

java.naming.security.principal=principal

java.naming.security.credentials=->

weblogic.jms.walletDir=dirctory

JMS RAの実行時には、ユーザー名としてprincipalの値が使用され、directoryの値によって指定されたディレクトリにあるcwallet.ssoファイルに格納されているパスワードを取得および使用するために、principalの値が使用されます。

wljmsra暗号化ユーティリティの使用

JMS RAは、Oracleウォレット・ファイルにアプリケーションの資格証明を追加するためのコマンド行ユーティリティを提供します。ユーティリティを実行するには、ディレクトリをインストールのwlserver/server/libディレクトリに変更し、次のコマンドを入力して有効なコマンドを表示します。

java -jar wljmsra.rar help
Usage:
create <dir>: Create wallet under given directory.
add <alias> <value> [dir]: Add value using the alias.
replace <alias> <value> [dir]: Replace value of the alias.
remove <alias> [dir]: Remove an alias.
dump [dir]: List all aliases in the wallet.
help: This help.

ウォレットの作成

次の例では、ディレクトリmywalletにウォレット・ファイルを作成するための暗号化ユーティリティを使用します。

java -jar wljmsra.rar create mywallet
Info: Created wallet under directory 'mywallet'.

エイリアスの作成

次の例では、エイリアスを作成するための暗号化ユーティリティを使用します。

java -jar wljmsra.rar add user6 pwd6
Info: Added alias 'user6'.

エイリアスの置換

次の例では、エイリアスを置換するための暗号化ユーティリティを使用します。

java -jar wljmsra.rar replace user6 newpwd6
Info: Replaced alias 'user6'.

エイリアスの削除

次の例では、エイリアスを削除するための暗号化ユーティリティを使用します。

java -jar wljmsra.rar remove user6
Info: Removed alias 'user6'.

ウォレット内のエイリアスの表示

次の例では、ウォレット内のエイリアスを表示するための暗号化ユーティリティを使用します。

java -jar wljmsra.rar dump mywallet
Info: Aliases found in wallet under 'mywallet'.
user4
Info: 1 aliases found.

ワイヤ通信の保護

ワイヤを介して送信される情報を保護するには、SSL/t3sを使用することをお薦めします。詳細は、Oracle Fusion Middleware Oracle WebLogic Serverのセキュリティの管理のSSLの構成に関する項を参照してください。

12 JMS RAのデプロイメント・ディスクリプタ要素とプロパティ

この章では、WebLogic Server 12.1.3のWebLogic JMS RAのデプロイメント・ディスクリプタ・ファイルra.xmlについて説明します。

この章には次の項が含まれます:

- JMS RAのra.xmlの概要

- JMS RAのra.xmlファイルの例

- JMS RAの要素の説明

- JMS RAのインバウンド・プロパティ

- JMS RAのアウトバウンドの構成プロパティ

- JMS RAのadminobjectの構成プロパティ

JMS RAのra.xmlの概要

JMS RAのJCA 1.6準拠のデプロイメント・ディスクリプタは、ra.xmlと呼ばれます。このファイルは、WebLogic JMSクライアントをサポートされている外部アプリケーション・サーバーと統合するために使用します。

JMS RAのra.xmlファイルの例

次の例は、ra.xmlデプロイメント・ディスクリプタを示しています。

例12-1 ra.xmlファイル

<?xml version="1.0" encoding="UTF-8"?>

<connector xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"
version="1.5">

<display-name>Oracle JMS Connector</display-name>
<vendor-name>Oracle Corporation</vendor-name>
<eis-type>JMS</eis-type>
<resourceadapter-version>2.0</resourceadapter-version>

<resourceadapter>
<resourceadapter-class>weblogic.jms.ra.ResourceAdapterImpl</resourceadapter-class>
<config-property>
<config-property-name>resourceProviderDefinitions</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<config-property-name>groupDefinitions</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>
(:)
</config-property-value>
</config-property>

<outbound-resourceadapter>

<!-- *************  WebLogic JMS Connection Factories  ************* -->

<!--  WebLogic JMS non-XA javax.jms.ConnectionFactory  -->
<connection-definition>
<managedconnectionfactory-class>
weblogic.jms.ra.WLManagedConnectionFactory
</managedconnectionfactory-class>
<connectionfactory-interface>
weblogic.jms.ra.WLConnectionFactoryInterface
</connectionfactory-interface>
<connectionfactory-impl-class>
weblogic.jms.ra.WLConnectionFactory
</connectionfactory-impl-class>
<connection-interface>
weblogic.jms.ra.WLConnectionInterface
</connection-interface>
<connection-impl-class>
weblogic.jms.ra.WLConnection
</connection-impl-class>
</connection-definition>

<!--  WebLogic JMS non-XA javax.jms.QueueConnectionFactory  -->

<connection-definition>
<managedconnectionfactory-class>
weblogic.jms.ra.WLManagedQueueConnectionFactory
</managedconnectionfactory-class>
<connectionfactory-interface>
weblogic.jms.ra.WLQueueConnectionFactoryInterface
</connectionfactory-interface>
<connectionfactory-impl-class>
weblogic.jms.ra.WLQueueConnectionFactory
</connectionfactory-impl-class>
<connection-interface>
weblogic.jms.ra.WLQueueConnectionInterface
</connection-interface>
<connection-impl-class>
weblogic.jms.ra.WLQueueConnection
</connection-impl-class>
</connection-definition>

<!--  WebLogic JMS non-XA javax.jms.TopicConnectionFactory  -->

<connection-definition>
<managedconnectionfactory-class>
weblogic.jms.ra.WLManagedTopicConnectionFactory
</managedconnectionfactory-class>
<connectionfactory-interface>
weblogic.jms.ra.WLTopicConnectionFactoryInterface
</connectionfactory-interface>
<connectionfactory-impl-class>
weblogic.jms.ra.WLTopicConnectionFactory
</connectionfactory-impl-class>
<connection-interface>
weblogic.jms.ra.WLTopicConnectionInterface
</connection-interface>
<connection-impl-class>
weblogic.jms.ra.WLTopicConnection
</connection-impl-class>
</connection-definition>

<!--  WebLogic JMS XA javax.jms.ConnectionFactory  -->

<connection-definition>
<managedconnectionfactory-class>
weblogic.jms.ra.WLManagedXAConnectionFactory
</managedconnectionfactory-class>
<connectionfactory-interface>
weblogic.jms.ra.WLXAConnectionFactoryInterface
</connectionfactory-interface>
<connectionfactory-impl-class>
weblogic.jms.ra.WLXAConnectionFactory
</connectionfactory-impl-class>
<connection-interface>
weblogic.jms.ra.WLXAConnectionInterface
</connection-interface>
<connection-impl-class>
weblogic.jms.ra.WLXAConnection
</connection-impl-class>
</connection-definition>

<!--  WebLogic JMS XA javax.jms.QueueConnectionFactory  -->

<connection-definition>
<managedconnectionfactory-class>
weblogic.jms.ra.WLManagedXAQueueConnectionFactory
</managedconnectionfactory-class>
<connectionfactory-interface>
weblogic.jms.ra.WLXAQueueConnectionFactoryInterface
</connectionfactory-interface>
<connectionfactory-impl-class>
weblogic.jms.ra.WLXAQueueConnectionFactory
</connectionfactory-impl-class>
<connection-interface>
weblogic.jms.ra.WLXAQueueConnectionInterface
</connection-interface>
<connection-impl-class>
weblogic.jms.ra.WLXAQueueConnection
</connection-impl-class>
</connection-definition>

<!--  WebLogic JMS XA javax.jms.TopicConnectionFactory  -->

<connection-definition>
<managedconnectionfactory-class>
weblogic.jms.ra.WLManagedXATopicConnectionFactory
</managedconnectionfactory-class>
<connectionfactory-interface>
weblogic.jms.ra.WLXATopicConnectionFactoryInterface
</connectionfactory-interface>
<connectionfactory-impl-class>
weblogic.jms.ra.WLXATopicConnectionFactory
</connectionfactory-impl-class>
<connection-interface>
weblogic.jms.ra.WLXATopicConnectionInterface
</connection-interface>
<connection-impl-class>
weblogic.jms.ra.WLXATopicConnection
</connection-impl-class>
</connection-definition>

<!-- ******************  miscellaneous outbound   ****************** -->

<transaction-support>XATransaction</transaction-support>

<authentication-mechanism>
<authentication-mechanism-type>
BasicPassword
</authentication-mechanism-type>
<credential-interface>
javax.resource.spi.security.PasswordCredential
</credential-interface>
</authentication-mechanism>
<reauthentication-support>false</reauthentication-support>

</outbound-resourceadapter>

<inbound-resourceadapter>
<messageadapter>
<messagelistener>
<messagelistener-type>
javax.jms.MessageListener
</messagelistener-type>
<activationspec>
<activationspec-class>
weblogic.jms.ra.ActivationSpecImpl
</activationspec-class>
<required-config-property>
<config-property-name>ConnectionFactory</config-property-name>
</required-config-property>
<required-config-property>
<config-property-name>Destination</config-property-name>
</required-config-property>
<required-config-property>
<config-property-name>DestinationType</config-property-name>
</required-config-property>
</activationspec>
</messagelistener>
</messageadapter>

</inbound-resourceadapter>

<!-- ******************  WebLogic JMS Destinations  ****************** -->

<!-- WebLogic JMS javax.jms.Queue, weblogic.jms.extensions.WLDestination -->
<adminobject>
<adminobject-interface>
weblogic.jms.ra.WLQueueAdminInterface
</adminobject-interface>
<adminobject-class>
weblogic.jms.ra.WLQueueAdmin
</adminobject-class>
</adminobject>

<!-- WebLogic JMS javax.jms.Topic, weblogic.jms.extensions.WLDestination -->
<adminobject>
<adminobject-interface>
weblogic.jms.ra.WLTopicAdminInterface
</adminobject-interface>
<adminobject-class>
weblogic.jms.ra.WLTopicAdmin
</adminobject-class>
</adminobject>

<!-- javax.naming.Context for looking up weblogic.jms.extensions.WLDestination -->

<adminobject>
<adminobject-interface>
weblogic.jms.ra.WLDestinationContextInterface
</adminobject-interface>
<adminobject-class>
weblogic.jms.ra.WLDestinationContext
</adminobject-class>
</adminobject>

</resourceadapter>

</connector>

JMS RAの要素の説明

ra.xmlデプロイメント・ディスクリプタ・ファイルの要素階層は次のとおりです。許可されている出現回数は、要素名に続くカッコで表示されています。各要素について、以降の各項で詳細に説明しています。

<connector> {1}
<display-name> {0 or 1}
<vendor-name {0 or 1}
<eis-type> {1}
<resourceadapter-version> {1}
<resourceadapter> {1}
<resourceadapter-class> {1}
<config-property> {0 or more}
<config-property-name> {1}
<config-property-type> {1}
<config-property-value {0 or 1}
<outbound-resourceadapter> {1}
<connection-definition> {1 or more}
<managedconnectionfactory-class{1}
<config-property> {0 or more}
<config-property-name> {1}
<config-property-type> {1}
<config-property-value {0 or 1}
<connectionfactory-interface> {1}
<connectionfactory-impl-class> {1}
<connection-interface> {1}
<connection-impl-class> {1}
<transaction-support> {1}
<authentication-mechanism> {1}
<authentication-mechanism-type> {1}
<credential-interface> {1}
<reauthentication-support> {1}
<inbound-resourceadapter> {1}
<messageadapter> {1}
<messagelistener> {1}
<messagelistener-type> {1}
<activationspec> {1}
<activationspec-class> {1}
<required-config-property> {0 or more}
<config-property-name> {1}
<adminobject> {1 or more}
<adminobject-interface> {1}
<adminobject-class> {1}
<config-property> {0 or more}
<config-property-name> {1}
<config-property-type> {1}
<config-property-value {0 or 1}

activationspec

<messagelistener>要素の<activationspec>子要素は、アクティブ化仕様を指定するために使用します。情報には、アクティブ化仕様の完全修飾Javaクラス名と必要な一連の構成プロパティ名が含まれます。

activationspec-class

<activationspec>要素の<activationspec-class>子要素は、アクティブ化仕様クラスの完全修飾Javaクラス名を指定するために使用します。このクラスは、javax.resource.spi.ActivationSpecインタフェースを実装する必要があります。JavaBeanとなるには、このクラスの実装が必要です。

adminobject

<resourceadapter>要素の<adminobject>子要素は、管理対象オブジェクトに関する情報を指定するために使用します。管理対象オブジェクトは、メッセージ・スタイルまたはメッセージ・プロバイダに固有です。これには、管理対象オブジェクトによって実装されるJavaタイプのインタフェース、そのJavaクラス名およびその構成プロパティに関する情報が含まれます。

adminobject-class

<adminobject>要素の<adminobject-class>子要素は、管理対象オブジェクトによって実装されるJavaタイプのインタフェースの完全修飾名を指定するために使用します。

adminobject-interface

<adminobject>要素の<adminobject-interface>子要素は、管理対象オブジェクトによって実装されるJavaタイプのインタフェースの完全修飾名を指定するために使用します。

authentication-mechanism

<outbound-resourceadapter>要素の<authentication-mechanism>子要素は、リソース・アダプタでサポートされている認証メカニズムを指定します。

BasicPasswordメカニズム・タイプでは、javax.resource.spi.security.PasswordCredentialインタフェースをサポートする必要があります。Kerbv5メカニズム・タイプでは、org.ietf.jgss.GSSCredentialインタフェースまたは非推奨のjavax.resource.spi.security.GenericCredentialインタフェースをサポートする必要があります。

authentication-mechanism-type

<authentication-mechanism>要素の<authentication-mechanism-type>子要素は、認証メカニズムを指定します。値は次のとおりです。

- BasicPassword

- Kerbv5

config-property-name

<config-property>または<required-config-property>要素の<config-property-name>子要素は、構成プロパティの名前を定義し、文字列として入力されます。有効な名前は、リソース・アダプタまたは管理対象オブジェクトの実装に固有です。

config-property-type

<config-property>要素の<config-property-type>子要素は、構成プロパティ値のデータ型を定義し、文字列として入力されます。たとえば、java.lang.Stringなどです。

config-property-value

<config-property>要素の<config-property-value>子要素は、構成プロパティの値を定義し、文字列として入力されます。

connection-definition

<outbound-resourceadapter>要素の<connection-definition>子要素は、接続ファクトリを定義するために、JCA仕様によって要求されるクラスおよびインタフェースを定義します。

connectionfactory-impl-class

<connection-definition>要素の<connectionfactory-imlp-class>子要素は、リソース・アダプタに固有のConnectionFactoryインタフェースを実装するConnectionFactoryクラスの完全修飾名を定義します。詳細は、http://java.sun.com/xml/ns/javaee/connector_1_6.xsdを参照してください。

config-property

<resourceadapter>要素、<adminobject>要素および<connection-definition>要素の<config-property>子要素は、リソース・アダプタの管理対象オブジェクトの構成プロパテを定義します。構成プロパティは、標準コネクタのデプロイメント・ディスクリプタに定義されているのと同じ方法で定義されます。

connectionfactory-interface

<connection-definition>要素の<connectionfactory-interface>子要素は、リソース・アダプタでサポートされているConnectionFactoryインタフェースの完全修飾名を指定します。詳細は、http://java.sun.com/xml/ns/javaee/connector_1_6.xsdを参照してください。

connection-impl-class

<connection-definition>要素の<connection-imlp-class>子要素は、リソース・アダプタに固有のConnectionインタフェースを実装するConnectionクラスの完全修飾名を指定します。詳細は、http://java.sun.com/xml/ns/javaee/connector_1_6.xsdを参照してください。

connection-interface

<connection-definition>要素の<connection-interface>子要素は、リソース・アダプタでサポートされているConnectionインタフェースの完全修飾名を指定します。

connector

<connector>要素は、WebLogic JMS RAのデプロイメント・ディスクリプタ・ファイルra.xmlのルート要素です。

credential-interface

<outbound-resourceadapter>要素の<authentication-mechanism>子要素は、資格証明を表現するためにリソース・アダプタの実装がサポートするインタフェースを指定します。値は次のとおりです。

- javax.resource.spi.security.PasswordCredential

- org.ietf.jgss.GSSCredential

- javax.resource.spi.security.GenericCredential

display-name

<display-name>要素は、JMS RAの表示名(GUIツールで表示できる短い名前)を指定する任意要素です。

eis-type

<eis-type>要素は、このデプロイメント・ディスクリプタ・ファイルのJMSとしてEnterprise Information System (EIS)リソースを指定します。

inbound-resourceadapter

<resourceadapter>要素の<inbound-resourceadapter>子要素は、インバウンドのリソース・アダプタに関する情報を指定するために使用します。これには、<messageadapter>要素を介して指定されたリソース・アダプタのライブラリの実装に固有の情報が含まれます。

managedconnectionfactory-class

<connection-definition>要素の<managedconnectionfactory-class>子要素は、javax.resource.spi.ManagedConnectionFactoryインタフェースを実装するJavaクラスの完全修飾名を指定します。このJavaクラスは、コネクタ・アーキテクチャ指定の規約の、リソース・アダプタの実装の一部として指定されます。JavaBeanとなるには、このクラスの実装が必要です。詳細は、http://java.sun.com/xml/ns/javaee/connector_1_6.xsdを参照してください。

messageadapter

<inbound-resourceadapter>要素の<messageadapter>子要素は、リソース・アダプタのメッセージング機能を指定するために使用します。これには、<messagelistener>要素を介して指定されたリソース・アダプタのライブラリの実装に固有の情報が含まれます。

messagelistener

<messageadapter>要素の<messagelistener>子要素は、<messagelistener-type>要素を介して指定されたメッセージ・リスナーの実装を指定するために使用します。

messagelistener-type

<messageadapter>要素の<messagelistener-type>子要素は、メッセージング・リソース・アダプタでサポートされている特定のメッセージ・リスナーを指定するために使用します。これには、Javaタイプのメッセージ・リスナー・インタフェースおよびアクティブ化仕様に関する情報が含まれます。

reauthentication-support

<outbound-resourceadapter>要素の<reauthentication-support>子要素は、リソース・アダプタの実装で既存の管理対象接続のインスタンスの再認証をサポートするかどうかを指定します。値はtrueまたはfalseのいずれかです。

required-config-property

<activationspec>要素の<required-config-property>子要素は、必要なプロパティを指定するために使用します。

resourceadapter

<resourceadapter>要素には、外部JMSプロバイダにデプロイされている単一のリソース・アダプタの構成が含まれます。

resourceadapter-class

<resourceadapter>要素の<resourceadapter-class>子要素は、JMS RAの実装クラスを指定します。

resourceadapter-version

<resourceadapter-version>要素は、このデプロイメント・ディスクリプタ・ファイルのリリース・バージョン番号を指定します。

outbound-resourceadapter

<resourceadapter>要素の<outbound-resourceadapter>子要素は、外部アプリケーション・サーバーからEnterprise Information System (EIS)に接続するために使用する構成を定義します。構成では、リソース・アダプタの接続ファクトリを定義します。

transaction-support

<outbound-resourceadapter>要素の<transaction-support>子要素は、リソース・アダプタによって提供されるトランザクション・サポートのレベルを指定します。値は次のいずれかになります。

- NoTransaction

- LocalTransaction

- XATransaction

vendor-name

オプションのvendor-name要素は、GUIツールで表示できるJMS RAのベンダー、Oracle Corporationを指定します。

JMS RAのインバウンド・プロパティ

次の表には、インバウンド・メッセージを消費するMDBの構成に使用する追加のプロパティに関する情報が表示されます。

表12-1 JMS RAのインバウンドの構成プロパティ

プロパティ

値

説明

acknowledgeMode

String

Auto-acknowledgeまたはDups-ok-acknowledgeに設定します。メッセージを消費し、MDBのonMessageメソッドをコールするリスナー・スレッドにより提供されるサービスのクオリティ(QoS)を制御します。

注意: このリリースのJMS RAでは、このプロパティは無視されます。少なくともAuto-acknowledgeと同等の堅牢性を備えたQoSが、常に使用されます。将来のバージョンでは、Dups-ok-acknowledgeのリクエストを受け入れる可能性があります。

デフォルトはAuto-acknowledgeです。

clientId

String

JMSクライアントの識別に使用される文字列値。設定すると、リスナー・スレッドにより使用される接続は、この値を使用するように設定されます。

clientIdは、WebLogic Server JMSトピックと相互運用するアプリケーションに必要です。

connectionFactory

String

接続ファクトリのJNDI名。

JMS RAはこの接続ファクトリを使用して、MDBのonMessage用のメッセージを受信するために使用されるJMS接続を作成します。例外キューが有効な場合(「例外キューの使用」を参照)、例外キューへのメッセージを生成するために、JMSコネクタもこの接続ファクトリから作成された接続を使用します。

onMessageメソッドがXAトランザクションが実行されるように構成されている場合、このプロパティによって指定された接続ファクトリはXAと関連付けられている必要があります。

connectionFactoryにnull以外の値を設定する必要があります。

destination

String

宛先のJNDI名。

JMS RAはこの宛先からメッセージを受信し、受信したメッセージをこのMDBのonMessageに渡します。

destinationにnull以外の値を設定する必要があります。

destinationType

JMStype

次のいずれかになります: javax.jms.Topic、javax.jms.Queue、javax.jms.Destination。

destinationTypeにnull以外の値を設定する必要があります。

exceptionQueue

String

例外キューとして使用するjavax.jms.QueueのJNDIロケーション。詳細は、「例外キューの使用」を参照してください。

UseExceptionQueueがtrueの場合は必須で、UseExceptionQueueがfalseの場合は無視されます。

FailureRetryInterval

long

WorkManagerがエンドポイントにリスナー・スレッドを割り当てるまでにアプリケーション・サーバーが待機する時間(ミリ秒)。

デフォルトは60,000ミリ秒です。

includeBodiesInExceptionQueue

boolean

trueの場合、例外キューに送信されるメッセージにメッセージ本文を含めます。通常の操作中に多くのメッセージが例外キューに送信される状況で、そのメッセージ本文が例外キューに不要の場合、この値をfalseに設定すると、パフォーマンスを向上させることができます。Using an Exception Queueがfalseの場合、このプロパティは無視されます。

このプロパティが適用されない場合は、次の2つです。

- 元のメッセージにメッセージ本文が含まれない場合は、例外キューに送信されるメッセージにもメッセージ本文は含まれません。

- なんらかの理由で元のメッセージのコピーを作成できない場合には、かわりに元のメッセージが例外キューに送信されます。これにより、例外キューにメッセージ本文が送信されます。

デフォルト値はtrue

listenerThreadMaxIdleDuration

long

メッセージを受信していないリスナー・スレッドをプールに戻す前に使用可能な時間(ミリ秒)。

エンドポイントがアクティブであるかぎり、その結果使用可能なスレッド数がminListenerThreadsの値より小さい場合、アイドル・スレッドは削除されません。

デフォルト値は300,000です。

loggerName

String

このエンドポイントのログ出力の取得に使用される名前(java.util.logging.Logger.getLoggerを参照)。

logLevel

Level

各ログ・メッセージには重大度レベルが関連付けられています。レベルはログ・メッセージの重要性および緊急性の指針を示します。サポートされている値は次のとおりです。

- ConnectionPool

- ConnectionOps

- TransactionalOps

- ListenerThreads

- INFO

- CONFIG

- FINE

- FINER

- FINEST

- SEVERE

- WARNING

- OFF

maxDeliveryCount

int

MaxDeliveryCntの値を超えるJMSXDeliveryCount値がメッセージに含まれる場合、そのメッセージは破棄されます。

例外キューが有効な場合は、そのメッセージのコピーが例外キューに送信されます。MaxDeliveryCntの値が0 (ゼロ)の場合、メッセージは破棄されません。詳細は、「例外キューの使用」を参照してください。

注意: MDBが例外をスローすることでメッセージに応答すると、メッセージは配信されたとみなされず、再配信される可能性があります。MDBが特定のメッセージに常に例外をスローして応答し、メッセージが破棄されないようにMaxDeliveryCntが0 (ゼロ)に設定されている場合、MDBが無限ループに陥り、同じメッセージの処理に失敗し続ける可能性があります。

デフォルト値は5です。

maxListenerThreads

int

エンドポイントに対して作成されるリスナー・スレッドの最大数。

- キューの場合: 2つ以上のスレッドを使用すると、メッセージが消費される速度の向上に役立つ場合があります。

- トピックの場合: この値は常に1に設定する必要があります。各リスナー・スレッドは、独自のセッションとTopicSubscriberを取得します。

- 恒久サブスクライバの場合: 複数のトピック・サブスクライバが同じサブスクリプション名を同時に複数の接続から使用する場合、この値は1より大きい値に設定できます。

- 非恒久サブスクライバの場合: 1つのスレッドを使用します。スレッドを増加すると、サブスクライバが増加し、処理する各メッセージのコピーも増加することになります。

デフォルト値は1です。

maxTotalListenerThreads

int

エンドポイントに対して作成されるリスナー・スレッドの追加数。

JMS RAでは、スレッドを割り当てるための公平性ポリシーを実装しており、これによって、maxListenerThreadsより小さい数が設定され、より多くのスレッドを必要としている宛先が、他のエンドポイント(少なくともさらに2つ多いスレッドを持つ)からスレッドを再割当てできます。

この公平性ポリシーは、アプリケーション・サーバーのWorkManagerがJMS RAによるmaxTotalListenerThreadsでの新規スレッドの追加リクエストを許可しない場合でも、続けて機能します。

デフォルト値は1000です。

messageSelector

String

MDBのonMessageメソッドに送信されたメッセージのフィルタ処理に使用されるセレクタ式。これは、リスナー・スレッドに対して作成されたJMSセッション用のメッセージのフィルタ処理に使用されます。

デフォルト値はnullで、メッセージのフィルタ処理なしです。

minListenerThreads

int

このエンドポイントに対して作成されるリスナー・スレッドの最小数。

有効な値の範囲は、1からmaxListenerThreadsです。アプリケーション・サーバーにより1つ以上のリスナー・スレッドの作成が可能になっても、MinListenerThreadsで指定されたスレッド数が作成されない場合は、エンドポイントのアクティブ化は失敗せず、使用可能な数のリスナー・スレッドが使用されます。

デフォルト値は1です。

noLocal

boolean

trueの場合、メッセージはローカルに公開されません。

場合によっては、1つの接続でトピックに対して公開とサブスクライブの両方が行えます。サブスクライバのnoLocal属性を使用すると、サブスクライバは独自の接続によって公開されるメッセージの配信を禁止できます。

デフォルト値はfalseです。

password

String

リソース・プロバイダのパスワード。詳細は、「userNameおよびpasswordの設定」を参照してください。

デフォルト値はNULLです。

providerProperties

String

カンマ(「,」)で区切られた名前/値ペアとして定義されている、追加のベンダー固有プロパティのリスト。

たとえば、次のように構成します。

my_property_name=my_property_value,another_property_name=another_property_value

詳細は、Oracle Fusion Middleware Oracle WebLogic Server Java APIリファレンスの「WLConnection」を参照してください。

receiveTimeout

long

現行のトランザクションを終了するまでにJMS RAがメッセージの到着を待機する時間(ミリ秒)。

トランザクション・マネージャにより、トランザクションが存続する時間が制限されます。この値は、トランザクションで問題が発生しないかぎり、onMessage中にトランザクション・マネージャによるトランザクションのタイムアウトが行われるように設定します。たとえば、トランザクション・マネージャのタイムアウトが30秒に設定されていて、onMessageルーチンはトランザクションで問題が発生しないかぎり10秒より長くかからない場合、この値は200,000 (20秒)に設定します。

デフォルト値は15,000です。

subscriptionDurability

boolean

Durableの場合、サブスクライバがアクティブでない間に送信されたメッセージもサブスクリプションが受信するように指定されます。

有効な値はDurableまたはNonDurableです。

javax.jms.Topicまたはjavax.jms.DestinationのDestinationTypeとnull以外のsubscriptionNameプロパティが必要です。

デフォルト値はNonDurableです。

subscriptionName

String

リスナー・スレッドの恒久サブスクライバの作成時に、サブスクライバにマッピングされる参照名。

subscriptionDurabilityの値がDurableで、DestinationTypeがjavax.jms.Topicまたはjavax.jms.Destinationの場合、このプロパティは必須です。その他のケースではすべて無視されます。

特定のJMSサーバーでは、(1つ以下のリスナー・スレッドを保持する必要のある)最大1つのMDBにサブスクリプション名が割り当てられます。

useExceptionQueue

boolean

trueの場合、他の場合には破棄されてしまうメッセージが例外キューに送信されます。メッセージは通常、maxDeliveryCount値を超えた場合に、例外キューに送信されます。有効なexceptionQueue名が必要です。

「maxDeliveryCount」を参照してください。

userName

String

リソース・プロバイダのユーザー名。詳細は、「userNameおよびpasswordの設定」を参照してください。

デフォルト値はNULLです。

JMS RAのアウトバウンドの構成プロパティ

各JMS接続ファクトリ・インタフェースには、独自の<connection-definition>要素があります。<connection-definition>では、JCA仕様によって要求されるクラスおよびインタフェースと、リソース・アダプタの構成プロパティを定義します。構成プロパティは、ra.xmlファイルで設定することも、このリソース・アダプタがデプロイされているJEEコンテナによって提供される構成ツールを使用して設定することもできます。

次のアウトバウンドの構成プロパティがサポートされています。

表12-2 JMS RAのアウトバウンドの構成プロパティ

プロパティ

値

説明

group

String

この接続定義に関連付けされるグループの名前。詳細は、「JMS RA接続ファクトリのプロパティの構成」を参照してください。

rpResourceLocation

String

<connection-definition>要素に関連付けられたJMS接続ファクトリをルックアップする方法を記述しているリソース・アダプタに情報を提供します。通常の形式は、connector:connectorName/remote-jndi-nameです。

groupDefinition内で定義されているマクロが、このフィールドの値として使用される場合があります。詳細は、「JMS RA接続ファクトリのプロパティの構成」を参照してください。

autoCloseSession

boolean

trueの場合、JMS RAは接続のクローズ時にセッションをクローズしようとします。

これは、セッションがオープンされている場合にXA接続をクローズしない、外部JMSプロバイダに対する回避策です。

providerCustomization

String

JMSプロバイダ固有のカスタマイズ・コードを指定します。値は完全修飾クラス名です。

プロバイダのカスタマイズ・コードは、RAカスタマイズAPIがフックを提供するすべてのもの(インバウンド、アウトバウンドおよびリカバリ・シナリオを含む)をカスタマイズできます。JMSプロバイダの接続ファクトリがpublic String getOracleJMSRAProviderCustomization()メソッドを実装している場合は、ProviderCustomizationプロパティを設定する必要はありません。両方が指定されている場合、ProviderCustomizationプロパティ(null以外かつ空白以外の値に設定されている場合)がgetOracleJMSRAProviderCustomization()メソッドより優先されます。

clientId

String

オプション。

このconnection-definitionから作成されたすべての接続では、JMSのclientIDにsetClientIdの値が設定されています。

これは、WebLogic Serverインスタンスの接続ファクトリ用に事前構成されたclientIdがない場合にのみ使用してください。

JMS RAのadminobjectの構成プロパティ

次のadminobjectの構成プロパティがサポートされています。

表12-3 JMS RAのadminobjectの構成プロパティ

プロパティ

値

説明

group

String

この接続定義に関連付けされるグループの名前。詳細は、「宛先およびネーミング・コンテキストの構成」を参照してください。

rpResourceLocation

String

<connection-definition>要素に関連付けられたJMS接続ファクトリをルックアップする方法を記述しているリソース・アダプタに情報を提供します。通常の形式は、connector:connectorName/remote-jndi-nameです。connectorNameはresourceProviderDefinitionsで定義される必要があります。詳細は、「基本的なリソース・プロバイダの構成」を参照してください。

groupDefinition内で定義されているマクロが、このフィールドの値として使用される場合があります。詳細は、「宛先およびネーミング・コンテキストの構成」を参照してください。

rpContextLocation

String

WebLogic Serverインスタンス内でキューまたはトピックを検索するのに使用される、宛先コンテキストをルックアップする方法を記述しているリソース・アダプタに情報を提供します。通常の形式は、connector:connectorName/です。connectorNameはresourceProviderDefinitionsで定義される必要があります。詳細は、「基本的なリソース・プロバイダの構成」を参照してください。

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2015, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

制限付権利

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。