この章では、エンタープライズ情報システム(EIS)に接続するためのWebLogic Serverリソース・アダプタや、リソース・アダプタが基づいているJava EEコネクタ・アーキテクチャについて説明します。また、WebLogic Serverにデプロイされるリソース・アダプタの構造や実行時の動作を定義するデプロイメント記述子についても説明します。
この章の内容は以下のとおりです。
リソース・アダプタは、エンタープライズ情報システム(EIS)に固有のシステム・ライブラリであり、EISへの接続を提供します。リソース・アダプタはデータベース管理システムへの接続を提供するJDBCドライバに似ています。リソース・アダプタとEIS間のインタフェースは基底のEISに固有のものであり、ネイティブ・インタフェースの場合もあります。リソース・アダプタはWebLogic Serverなどのアプリケーション・サーバーに接続し、EIS、アプリケーション・サーバー、およびエンタープライズ・アプリケーションの間にシームレスな接続を提供します。
1つのアプリケーション・サーバーに複数のリソース・アダプタを接続できます。それによって、アプリケーション・サーバーにデプロイされたアプリケーション・コンポーネントが基底のEISにアクセスできます。すべてのシステム・レベルのメカニズム(トランザクション、セキュリティ、接続管理など)がアプリケーション・コンポーネントからは意識されないように、アプリケーション・サーバーとEISが共同で作業を行います。したがって、アプリケーション・コンポーネント・プロバイダは、アプリケーション・コンポーネントのビジネス・ロジックやプレゼンテーション・ロジックの開発に専念でき、EISの統合に関連したシステム・レベルの問題に関わる必要はありません。複数のEISと接続する必要のある、スケーラブルでセキュアなトランザクション対応のエンタープライズ・アプリケーションを、より簡単に短期間で開発できるようになります。
WebLogic Integration (WLI)リソース・アダプタとWebLogic Serverリソース・アダプタの違いに注意することが重要です。WebLogic Integrationリソース・アダプタはWebLogic Server用に記述されるもので、通常は他のアプリケーション・サーバーにはデプロイできません。一方、WLIの拡張機能を利用せずに記述されたWebLogic Serverリソース・アダプタは、Java EEに準拠したアプリケーション・サーバーにデプロイできます。このドキュメントでは、非WLIリソース・アダプタの設計と実装について説明します。
WebLogic Serverは3種類のリソース・アダプタをサポートしています。
アウトバウンド・リソース・アダプタ — アプリケーションがEISシステムに接続して、作業を行えるようになります。すべての通信はアプリケーションによって開始されます。この場合、リソース・アダプタはEISに接続するためのパッシブなライブラリとして機能し、アプリケーション・スレッドのコンテキストで実行されます。
Java EEコネクタ・アーキテクチャ1.5および1.6に基づいたアウトバウンド・リソース・アダプタは、複数の同時アウトバウンド接続を行うように構成できます。WebLogic Server固有の認証やトランザクションのサポートを利用するように、各アウトバウンド接続を構成することもできます。「アウトバウンド接続の構成」を参照してください。
Java EEコネクタ・アーキテクチャ1.0に基づいたアウトバウンド・リソース・アダプタもサポートされています。1.0のリソース・アダプタでは、アウトバウンド接続は1つだけ行うことができます。
インバウンド・リソース・アダプタ(1.5および1.6のみ) - EISはアプリケーションを呼び出して作業を行えるようになります。すべての通信はEISによって開始されます。リソース・アダプタはWebLogic Serverのスレッドをリクエストしたり、独自のスレッドを生成したりできますが、この方法はお薦めしません。リソース・アダプタからワーク・マネージャを経由して作業を送信することをお薦めします。第8章「メッセージ・インフローとトランザクション・インフロー」を参照してください。
注意: WebLogic Serverシン・クライアントJARは、ワーク・マネージャ規約をサポートしているので、非管理対象リソース・アダプタ(WebLogic Serverで実行されないリソース・アダプタ)として使用することもできます。 |
双方向リソース・アダプタ(1.5および1.6のみ) - アウトバウンドとインバウンドの両方の通信をサポートします。
WebLogic Serverでは、次のJava EE Connector Architecture (1.7)機能をサポートします。
管理されたオブジェクト・リソースを定義するために、@AdministeredObjectDefinition/@AdministeredObjectDefinitions
アノテーションおよび同等のデプロイメント記述子をサポートします。
接続ファクトリ・リソースを定義するために、@ConnectionFactoryDefinition/@ConnectionFactoryDefinitions
および同等のデプロイメント記述子をサポートします。
WebLogic Server Full Platformでサポートされるコネクタ・アーキテクチャ1.6の主な内容は次のとおりです。
開発容易性に関する機能
コネクタ・アーキテクチャ1.6では、開発プロセスを単純化するためにいくつかの機能(メタデータの注釈や「まばらな」デプロイメント記述子のサポートなど)が追加されています。メタデータの注釈をリソース・アダプタ・クラス・ファイルに埋め込んで、デプロイメント情報を指定できます。これにより、ra.xml
ファイルを手動で作成する必要性が最小限に抑えられます。場合によっては必要性がなくなります。「デプロイメント情報を指定するメタデータ注釈の使用」を参照してください。
汎用ワーク・コンテキスト
汎用ワーク・コンテキストは、リソース・アダプタが、コンテキスト情報(トランザクション・コンテキストやセキュリティ・コンテキスト)をEISからWebLogic Serverに伝播するためにメッセージの配信またはWorkインスタンスの発行の際に使用するメカニズムです。詳細は、「汎用ワーク・コンテキスト」を参照してください。
セキュリティ・コンテキスト
コネクタ・アーキテクチャ1.6で定義される標準の汎用セキュリティ・コンテキストは、『JSR 196: Java Authentication Service Provider Interface for Containers』の仕様を活用しています。詳細は、「セキュリティ・インフロー」を参照してください。
その他の改善点:
動的に再構成できる構成プロパティ
リソース・アダプタ・コンポーネントBeanの、動的に構成できるプロパティを指定する機能です。これらのプロパティは実行時に再構成できるようになり、アダプタの再起動や再デプロイは必要ありません。「動的に再構成できる構成プロパティ」を参照してください。
リソース・アダプタが、実行時に提供できるトランザクション・サポート・レベルを決定および分類できる機能。「トランザクション・サポート・レベルの指定および取得」を参照してください。
オプションの分散Work
処理。アプリケーション・サーバー・インスタンスのWorkManagerが、リソース・アダプタで発行されたWork
インスタンスを、別のアプリケーション・サーバー・インスタンスにある別のWorkManager
に分散するかどうかを選択できます。
WebLogic Serverでは、Java EEコネクタ・アーキテクチャのバージョン1.0、1.5および1.6に基づいて開発されたリソース・アダプタをサポートしています。Java EEコネクタ・アーキテクチャ1.0では、一方向のアウトバウンド通信を使用した、リソース・アダプタから1つの外部システムへの通信のみに制限されています。Java EEコネクタ・アーキテクチャ1.5ではこの制限がなくなりました。1.5と1.6のリソース・アダプタで提供される他の機能で、1.0リソース・アダプタに適用されないものは、以下のとおりです。
アプリケーションから、エンタープライズ情報システム(EIS)やデータベースなどの複数のシステムへのアウトバウンド通信。「インバウンド、アウトバウンド、および双方向のリソース・アダプタ」を参照してください。
EISなどの1つまたは複数の外部システムからリソース・アダプタへのインバウンド通信。「インバウンド・メッセージの処理」を参照してください。
トランザクション・インフロー。Java EEアプリケーション・サーバーは、リソース・アダプタを経由して、外部トランザクション・マネージャが制御するXAトランザクションに関与できるようになります。「トランザクション・インフロー」を参照してください。
WebLogic Serverが提供するワーク・マネージャ。リソース・アダプタはWork
インスタンスを介してスレッドを作成できるようになります。「work-manager」を参照してください。
アプリケーション・サーバーによってリソース・アダプタのstart()
およびstop()
メソッドを呼び出すためのライフサイクル規約。「起動クラスとして実行するためのリソース・アダプタのプログラミング」を参照してください。
1.0リソース・アダプタと1.5および1.6リソース・アダプタのもう1つの重要な相違点は接続プールに関連しています。1.5および1.6リソース・アダプタの場合、接続ファクトリにつき1つの接続プールが自動的に取得されることはありません。接続インスタンスを構成する必要があります。それには、weblogic-ra.xml
デプロイメント記述子のconnection-instance
要素を設定します。
WebLogic Server Full Platformは現在『JSR 322: Java EE Connector Architecture 1.6』に準拠していますが、バージョン1.0および1.5も引続き完全にサポートしています。WebLogic Serverは、コネクタ・アーキテクチャ1.6に従って、スキーマに基づいたデプロイメント記述子をサポートしています。Java EEコネクタ・アーキテクチャ1.0に基づいて開発されたリソース・アダプタでは、文書型定義(DTD)に基づいたデプロイメント記述子を使用します。DTDに基づくデプロイメント記述子で構築されたリソース・アダプタも引続きサポートされます。
このドキュメントでは、1.6リソース・アダプタの開発と使用について説明します。
WebLogic Server では、『JSR 322: Java EE Connector Architecture 1.6』を補足するために次のような機能がコネクタ・コンテナで提供されます。
埋込みリソース・アダプタおよびグローバル・リソース・アダプタでの『JSR 299: Contexts and Dependency Injection for the Java EE Platform』(CDI)のサポート。CDIは、インジェクションを使用してアプリケーションに依存関係を指定するための一連のサービスを定義します。詳細は、第5章「リソース・アダプタでのContexts and Dependency Injectionの使用」を参照してください。
追加の実行時トランザクション・レベル指定。WebLogic Serverは、ConnectorConnectionPoolRuntimeMBean.RuntimeTransactionSupport
MBean属性およびWebLogic Server管理コンソールに実行時トランザクション・レベルの情報を公開します。詳細は、「サポートされているトランザクション・レベル」を参照してください。
java:comp/TransactionSynchronizationRegistry
の標準名を使用してJNDIのTransactionSynchronizationRegistry
オブジェクトをルックアップする機能。Oracleでは、このサポートを拡張するため、2つのグローバルJNDI名(javax/transaction/TransactionSynchronizationRegistry
とweblogic/transaction/TransactionSynchronizationRegistry
)を追加しました。詳細は、javax.transaction.TransactionSynchronizationRegistry
を参照してください。
WebLogic ServerがConnectorWorkManagerRuntimeMBean
およびWebLogic Server管理コンソールに公開する、長時間実行している
Workインスタンスの管理とモニタリング(現在アクティブな作業リクエストの数と完了した作業リクエストの数を含む)。「長時間実行するWorkのサポート」を参照してください。
javax.resource.spi.RetryableException
例外をアウトバウンド接続プールに拡張することで、この例外をサポートします。一時停止された接続のプールから接続を取得しようとすると、WebLogic Serverは、RetryableException
インタフェースを実装するRetryableApplicationServerInternalException
をスローします。RetryableException
インスタンスを使用して、障害が一過性かどうかを判別できます。
EISプリンシパル(EISセキュリティ・ドメインに定義されたユーザーやグループなど)をWebLogicドメイン内の対応するプリンシパルにマッピングするEISからWebLogicへのインバウンド・プリンシパル・マッピングを作成する手段を提供することによる、WebLogic Server管理コンソールでのセキュリティ・コンテキストの補足サポート。詳細は、「インバウンド・プリンシパル・マッピング」を参照してください。
モジュールレベルの『JSR 303: Bean Validation』構成のサポート。WebLogic ServerによってJava EE 6が拡張されます。リソース・アダプタ・モジュールを検証するために、このBean構成ファイルをオプションで使用できます。
weblogic.connector.extensions.ExtendedBootstrapContext
の新しいメソッド:
リソース・アダプタが検証のために独自のBeanのValidator
およびValidatorFactory
インスタンスをルックアップする手段が提供されます。「Beanの検証」を参照してください。
リソース・アダプタのBeanManager
インスタンスを返して、CDIインジェクションをサポートします。「BeanManager」および「CDI Beanアーカイブとしてデプロイされたリソース・アダプタの使用」を参照してください。
Work
名のヒント — Work
インスタンスの名前になります。これは、長時間実行するWorkインスタンスに割り当てられるスレッド名の一部として使用されます。nameHint
はスレッド名の一部を構成しますが、長時間実行するWorkのみで使用されます。詳細は、「長時間実行するWorkのサポート」を参照してください。
リソース・アダプタに複数の接続プールが構成されている場合に、デプロイ中に正常な接続プールから失敗した接続プールを分離する機能。これにより、リソース・アダプタを再デプロイすることなく、失敗した接続プールの検出、診断、修正、およびアダプタ・デプロイメントの動的更新を行えます。
アウトバウンド接続プールの障害検出機能は、ヘルス監視機能から使用できます。これは、リソース・アダプタにまで拡張されています。リソース・アダプタ・デプロイメントのヘルス状態の確認は、WLSTまたはWebLogic Server管理コンソールを使用して行えます。詳細は、「リソース・アダプタのヘルス監視」および「複数のアウトバウンド接続プールで構成されたリソース・アダプタのデプロイ」を参照してください。
Java EEコネクタ・アーキテクチャでは、Java EEプラットフォームを、エンタープライズ・リソース・プランニング(ERP)システム、メインフレーム・トランザクション処理(TP)、データベース・システムなどの異種のエンタープライズ情報システム(EIS)に接続するための、標準アーキテクチャを定義しています。
リソース・アダプタは、任意のEIS通信プロトコルを接続に使用できるようにするプロトコル・アダプタとして機能します。アプリケーション・サーバー・ベンダーは、Java EEコネクタ・アーキテクチャをサポートするためにシステムを一度拡張すれば、複数のEISとのシームレスな接続を確保できます。同様に、EISベンダーは1つの標準リソース・アダプタを提供すると、そのアダプタでJava EEコネクタ・アーキテクチャをサポートするどのアプリケーション・サーバーにも接続できます。
また、『The Java EE 6 Tutorial』の「Resource Adapters and Contracts」も参照してください。
図2-1とその下の解説では、コネクタ・アーキテクチャ1.6のWebLogic Server実装について説明します。
図2-1のコネクタ・アーキテクチャの概要では、双方向のリソース・アダプタを例示しています。アウトバウンド接続処理では以下のコンポーネントが使用されます。
クライアント・アプリケーション。WebLogic Serverに接続し、EISとも対話する必要があります。
アプリケーション・コンポーネント(EJBまたはサーブレット)。クライアント・アプリケーションがリソース・アダプタを介してアウトバウンド・リクエストをEISにアウトバウンドするために使用します。
WebLogic Serverコネクタ・コンテナ。この中にリソース・アダプタがデプロイされます。この例のコンテナには以下のものが含まれています。
EISとの双方向(インバウンドおよびアウトバウンド)通信を提供する、デプロイされたリソース・アダプタ。
コンテナが保持する1つまたは複数の接続プール。特定のManagedConnectionFactory
に対応し、アウトバウンドの管理対象接続を管理するために使用されます(この例ではMCF-2。1つのEISとの接続や様々なEISとの接続など、接続の種類に応じて他にも存在する場合があります)。
複数の管理対象接続(MC1、MCn)。リソース・アダプタからEISへの物理的なアウトバウンド接続を表現するオブジェクトです。
接続ハンドル(C-handle)。リソース・アダプタの接続ファクトリからアプリケーション・コンポーネントに返されます。アプリケーション・コンポーネントがEISとの通信に使用します。
インバウンド接続処理では以下のコンポーネントが使用されます。
1つまたは複数の外部メッセージ・ソース(MS1、MS2)。WebLogic Serverへのインバウンド・メッセージを送信する、エンタープライズ情報システム(EIS)またはメッセージ・プロバイダです。
1つまたは複数のActivationSpec (Act Spec)。それぞれが1つのMessageListener型(MLT-i)に相当します。
MessageEndpointFactory
。EJBコンテナが作成し、インバウンド・メッセージング用リソース・アダプタがMessageEndpoint
インスタンス(MDBプールのMDBインスタンス)のプロキシを作成するために使用します。
メッセージ・エンドポイント・アプリケーション(メッセージドリブンBean (MDB)やその他のJava EEコンポーネント)。リソース・アダプタを介してEISからインバウンド・メッセージをインバウンドして処理します。
WebLogic ServerとEISの間に標準のシステム・レベルのプラガブル性を実現するために、WebLogic Serverでは、Java EEコネクタ・アーキテクチャで定義されたシステム・レベル規約の標準を実装しました。この規約は、2つのシステムが協調して作業できるように、アプリケーション・サーバーとEISで実装する必要のあるSPIクラスとインタフェースで構成されています。システム・レベル規約のEIS側は、リソース・アダプタのJavaクラスで実装されます。以下の標準規約がサポートされます。
接続管理規約 — WebLogic Serverは基底のEISへの接続をプールし、アプリケーション・コンポーネントはEISに接続することができます。リソースの共有を通じて接続を効率的に使用したり、接続ハンドルとEIS接続の関連付けおよび関連付けの解除を制御したりできます。
トランザクション管理規約 — トランザクション・マネージャと、EISリソース・マネージャへのトランザクション・アクセスをサポートするEISとの間の規約。WebLogic Serverはトランザクション・マネージャを使用して、複数のリソース・マネージャにわたるトランザクションを管理できます。
トランザクション・インフロー規約 — リソース・アダプタはインポートされたトランザクションをWebLogic Serverに伝播できます。リソース・アダプタは、EISによって開始されたトランザクション完了呼出しやクラッシュ・リカバリ呼出しを流入させることができます。トランザクション・インフローでは、トランザクションを調整するために外部トランザクション・マネージャも使用されます。
セキュリティ規約 - 接続管理規約を拡張した規約です。EISへのセキュアなアクセスを提供し、EISに対するセキュリティの脅威を小さくするセキュアなアプリケーション環境をサポートします。また、EISによって管理される貴重な情報リソースを保護します。
ライフサイクル管理規約 — WebLogic Serverはリソース・アダプタのライフサイクルを管理できます。デプロイメント時またはアプリケーション・サーバーの起動時にリソース・アダプタ・インスタンスのブート・ストラップを行ったり、アンデプロイ時やアプリケーション・サーバーの停止時にリソース・アダプタ・インスタンスに通知したりできます。
作業管理規約 — リソース・アダプタは、実行用にWebLogic ServerにWork
インスタンスを送信することで、作業(ネットワーク・エンドポイントのモニター、アプリケーション・コンポーネントの呼び出しなど)を行うことができます。
汎用ワーク・コンテキスト規約 — リソース・アダプタがコンテキスト(すなわち、発行するWorkインスタンスが、WebLogic ServerのWorkManagerによって実行されるコンテキスト)を制御できるようになります。また、汎用ワーク・コンテキスト・メカニズムにより、WebLogic Serverは新しいメッセージ・インフローおよび配信方法をサポートできるようになります。同時実行アクティビティを管理する機能も含まれる堅牢なコンテキストWork実行環境が、リソース・アダプタにもたらされます。
汎用ワーク・コンテキスト規約によって、トランザクション・コンテキストとセキュリティ・コンテキストが標準化されます。『JSR 322: Java EE Connector Architecture 1.6』では、リソース・アダプタとアプリケーション・サーバーの間のこの規約が詳しく定義されています。インタフェースやクラス、スレッド・モデル、コンテキストの確認や確立のための規則、エラー処理、イベント通知などが含まれます。
メッセージ・インフロー規約 — リソース・アダプタは、メッセージの配信に使用される特定のメッセージング・スタイル、メッセージング・セマンティクス、およびメッセージング・インフラストラクチャとは独立して、WebLogic Server内のメッセージ・エンドポイントに、メッセージを非同期または同期的に配信できます。また、この規約は標準のメッセージ・プロバイダのプラガブル性規約としても機能し、リソース・アダプタを介して様々なメッセージ・プロバイダ(Java Message ServiceやJava API for XML Messagingなど)をWebLogic Serverにプラグインできます。
このようなシステムレベルの規約は『JSR 322: Java EE Connector Architecture 1.6』で詳しく説明されています。
リソース・アダプタの構造と実行時の動作はデプロイメント記述子で定義されます。プログラマはパッケージ化のプロセスでデプロイメント記述子を作成します。そのデプロイメント記述子は、アプリケーションのコンパイル時にアプリケーションの一部になります。
WebLogic Serverリソース・アダプタには2つのデプロイメント記述子があり、それぞれにXMLスキーマがあります。
ra.xml
- 標準のJava EEデプロイメント記述子。すべてのリソース・アダプタをra.xml
デプロイメント記述子ファイルに指定する必要があります。ra.xml
のスキーマはhttp://xmlns.jcp.org/xml/ns/javaee/connector_1_7.xsd
です。
注意: コネクタ・アーキテクチャ1.6ではメタデータの注釈が導入されています。これを使用すると、リソース・アダプタ・クラス・ファイルのデプロイメント情報を指定できます。これにより、ra.xml ファイルを手動で作成する必要性が最小限に抑えられます。場合によっては必要性がなくなります。 |
weblogic-ra.xml
- トランザクション管理、接続管理、セキュリティなどのWebLogic Serverの機能に関連する要素を格納するWebLogic Server固有のデプロイメント記述子。リソース・アダプタをWebLogic Serverにデプロイするにはこのファイルが必要です。weblogic-ra.xml
デプロイメント記述子ファイルのスキーマはhttp://xmlns.oracle.com/weblogic/weblogic-connector/1.5/weblogic-connector.xsd
です。weblogic-ra.xml
デプロイメント記述子のリファレンスについては、付録A「weblogic-ra.xmlスキーマ」を参照してください。