Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


3.16.1 リソースアダプタのライフサイクル管理

Connector 1.5仕様に準拠したリソースアダプタを利用する場合,J2EEサーバによってリソースアダプタのライフサイクルを管理できます。

リソースアダプタのライフサイクル管理とは,リソースアダプタの開始処理と停止処理を,J2EEサーバで管理する機能です。

〈この項の構成〉

(1) 前提条件

リソースアダプタのライフサイクル管理は,リソースアダプタが次の条件を満たす場合に有効になります。

なお,DDの<connector>-<resourceadapter>-<resourceadapter-class>の指定が省略されている場合,リソースアダプタのライフサイクル管理は実行されません。

(2) ライフサイクル管理に使用するクラス

リソースアダプタのライフサイクル管理に使用するクラスについて説明します。使用するクラスには,リソースアダプタでの実装が必要なクラスと,J2EEサーバが提供するクラスがあります。

(a) リソースアダプタで実装が必要なクラス

リソースアダプタでは,次のクラスの実装が必要です。なお,これらのクラスはJavaBeanとして実装することが,Connector 1.5仕様で規定されています。

  • javax.resource.spi.ResourceAdapterインタフェースの実装クラス

  • javax.resource.spi.ManagedConnectionFactoryインタフェースの実装クラス

  • AdminObject(管理対象オブジェクト)の実装クラス

詳細な実装については,Connector 1.5仕様を参照してください。

(b) J2EEサーバが提供するクラス

J2EEサーバは,次のクラスを提供します。

  • javax.resource.spi.work.WorkManagerインタフェースの実装クラス

    このクラスには,doWork(Work)メソッド,scheduleWork(Work)メソッド,startWork(Work)メソッドなどが実装されています。

  • javax.resource.spi.BootstrapContextインタフェースの実装クラス

    このクラスには,createTimer()メソッド,getWorkManager()メソッド,およびgetXATerminator()メソッドが実装されています。

    なお,アプリケーションサーバでは,BootstrapContextインタフェースのgetXATerminatorメソッドを呼び出した場合,nullが返却されるように実装されています。

(3) ライフサイクル管理の制御

ここでは,ライフサイクル管理の対象になる,リソースアダプタの開始処理と停止処理の制御について説明します。

リソースアダプタの開始処理および停止処理は,次のタイミングで実行されます。

(a) リソースアダプタの開始処理を実行した場合の制御

リソースアダプタの開始処理を実行した場合の制御の流れを次の図に示します。

図3‒36 リソースアダプタの開始処理を実行した場合の制御の流れ

[図データ]

リソースアダプタの開始処理によって実行される制御について説明します。なお,項番は図中の数字と対応しています。

  1. WorkManager(javax.resource.spi.work.WorkManagerインタフェースの実装クラス)が生成されます。

  2. BootstrapContext(javax.resource.spi.BootstrapContextインタフェースの実装クラス)が生成されます。

  3. ResourceAdapterJavaBean(javax.resource.spi.ResourceAdapterインタフェースの実装クラス)が生成されます。

    ResourceAdapterJavaBeanとして生成される実装クラスは,リソースアダプタのDD(ra.xml)の<connector>-<resourceadapter>-<resourceadapter-class>に指定したクラスです。

    このタグで指定したクラスのインスタンス化に失敗した場合,リソースアダプタの開始が失敗します。このとき,KDJE48589-Eのメッセージが出力されます。

  4. ResourceAdapterJavaBeanにプロパティが設定されます。

    DD(ra.xml)の<connector>-<resourceadapter>-<config-property>に指定した値は,3.で生成されたResourceAdapterJavaBeanに設定されます。設定は,JavaBeanの仕様に従い,setterメソッドで実行されます。setterメソッドの呼び出しで例外が発生した場合は,KDJE48594-Wのメッセージが出力されます。ただし,処理は継続されます。

  5. javax.resource.spi.ResourceAdapterインタフェースのstartメソッドが呼び出され,リソースアダプタが開始されます。

    このメソッドの呼び出しによって例外がスローされた場合は,リソースアダプタの開始が失敗します。このとき,KDJE48590-Eのメッセージが出力されます。

  6. ResourceAdapterJavaBeanとManagedConnectionFactoryJavaBeanが関連づけられます(Outboundの場合)。

    ライフサイクル管理機能を使用する場合,javax.resource.spi.ManagedConnectionFactoryインタフェースの実装クラスはjavax.resource.spi.ResourceAdapterAssociationインタフェースを実装しています。ResourceAdapterJavaBeanとManagedConnectionFactoryの関連づけは,javax.resource.spi.ResourceAdapterAssociationインタフェースのsetResourceAdapter(ResourceAdapter)メソッドで実行されます。

    また,次の場合には,リソースアダプタの開始が失敗します。このとき,KDJE48591-Eが出力されます。

    • ManagedConnectionFactoryJavaBeanがjavax.resource.spi.ResourceAdapterAssociationインタフェースを実装していなかった場合

    • setResourceAdapterメソッドの呼び出しに対して例外がスローされた場合

  7. AdminObjectJavaBean(管理対象オブジェクト)が生成され,プロパティが設定されます。

    AdminObjectJavaBeanとして生成される実装クラスは,リソースアダプタのDD(ra.xml)の<connector>-<resourceadapter>-<adminobject>-<adminobject-class>に指定したクラスです。このタグで指定したクラスのインスタンス化に失敗した場合,リソースアダプタの開始が失敗します。このとき,KDJE48597-Eのメッセージが出力されます。

    また,DD(ra.xml)の<connector>-<resourceadapter>-<adminobject>-<config-property>で指定した値が,AdminObjectJavaBeanに設定されます。設定は,JavaBeanの仕様に従い,setterメソッドで実行されます。AdminObjectJavaBeanのsetterメソッドの呼び出しで例外が発生した場合は,KDJE48598-Wのメッセージが出力されます。ただし,処理は継続されます。

注※

アプリケーションに含まれるリソースアダプタの場合,リソースアダプタの開始が失敗したときには,そのリソースアダプタを含むアプリケーションの開始処理も失敗します。

(b) リソースアダプタの停止処理を実行した場合の制御

リソースアダプタの停止処理を実行した場合の制御を次の図に示します。

図3‒37 リソースアダプタの停止処理を実行した場合の制御

[図データ]

リソースアダプタの停止処理によって実行される制御について説明します。なお,項番は図中の数字と対応しています。

  1. 停止するリソースアダプタを参照しているEJB,サーブレット,Message-driven Beanがすべて停止していることが確認されます。

    次の要素が使用されていないことが確認されます。

    • Inboundリソースアダプタ

    • コネクションファクトリ

    • 管理対象オブジェクト

    これらが使用されていた場合は,リソースアダプタの停止処理が中止されます。

  2. AdminObjectJavaBean(管理対象オブジェクト)が破棄されます。

  3. javax.resource.spi.ResourceAdapterインタフェースのstopメソッドが呼び出され,リソースアダプタが停止します。

    このメソッドの呼び出しによって例外がスローされた場合は,KDJE48590-Eのメッセージが出力されて,リソースアダプタの停止処理が失敗します。

  4. ResourceAdapterJavaBeanが破棄されます。

(c) リソースアダプタの状態遷移

リソースアダプタは,リソースアダプタの開始処理または停止処理が実行されたタイミングで,「開始状態」または「停止状態」に遷移します。

リソースアダプタの状態遷移を次の図に示します。

図3‒38 リソースアダプタの状態遷移

[図データ]

(4) ライフサイクル管理機能を使用するときの注意

ライフサイクル管理機能を使用する場合は,次の点に注意してください。