リソースアダプタのライフサイクル管理に使用するクラスについて説明します。使用するクラスには,リソースアダプタでの実装が必要なクラスと,J2EEサーバが提供するクラスがあります。
●リソースアダプタで実装が必要なクラス
リソースアダプタでは,次のクラスの実装が必要です。なお,これらのクラスはJavaBeanとして実装することが,Connector 1.5仕様で規定されています。
- javax.resource.spi.ResourceAdapterインタフェースの実装クラス
- javax.resource.spi.ManagedConnectionFactoryインタフェースの実装クラス
- AdminObject(管理対象オブジェクト)の実装クラス
詳細な実装については,Connector 1.5仕様を参照してください。
●J2EEサーバが提供するクラス
J2EEサーバは,次のクラスを提供します。
- javax.resource.spi.work.WorkManagerインタフェースの実装クラス
このクラスには,doWork(Work)メソッド,scheduleWork(Work)メソッド,startWork(Work)メソッドなどが実装されています。
- javax.resource.spi.BootstrapContextインタフェースの実装クラス
このクラスには,createTimer()メソッド,getWorkManager()メソッド,およびgetXATerminator()メソッドが実装されています。
なお,Application Serverでは,BootstrapContextインタフェースのgetXATerminatorメソッドを呼び出した場合,nullが返却されるように実装されています。
ここでは,ライフサイクル管理の対象になる,リソースアダプタの開始処理と停止処理の制御について説明します。
リソースアダプタの開始処理および停止処理は,次にタイミングで実行されます。
- J2EEリソースアダプタを開始または停止したとき(cjstartrarコマンドまたはcjstoprarコマンドを実行したとき)
- J2EEサーバを起動または停止したとき(cjstartsvコマンドまたはcjstopsvコマンドを実行したとき)
- リソースアダプタを含むアプリケーションを開始または停止したとき(cjstartappコマンドまたはcjstopappコマンドを実行したとき)
●リソースアダプタの開始処理を実行した場合の制御
リソースアダプタの開始処理を実行した場合の制御の流れを次の図に示します。
図9-25 リソースアダプタの開始処理を実行した場合の制御の流れ
リソースアダプタの開始処理によって実行される制御について説明します。なお,項番は図中の数字と対応しています。
- WorkManager(javax.resource.spi.work.WorkManagerインタフェースの実装クラス)が生成されます。
- BootstrapContext(javax.resource.spi.BootstrapContextインタフェースの実装クラス)が生成されます。
- ResourceAdapterJavaBean(javax.resource.spi.ResourceAdapterインタフェースの実装クラス)が生成されます。
ResourceAdapterJavaBeanとして生成される実装クラスは,リソースアダプタのDD(ra.xml)の<connector>-<resourceadapter>-<resourceadapter-class>に指定したクラスです。
このタグで指定したクラスのインスタンス化に失敗した場合,リソースアダプタの開始が失敗します※。このとき,KDJE48589-Eのメッセージが出力されます。
- ResourceAdapterJavaBeanにプロパティが設定されます。
DD(ra.xml)の<connector>-<resourceadapter>-<config-property>に指定した値は,3.で生成されたResourceAdapterJavaBeanに設定されます。設定は,JavaBeanの仕様に従い,setterメソッドで実行されます。setterメソッドの呼び出しで例外が発生した場合は,KDJE48594-Wのメッセージが出力されます。ただし,処理は継続されます。
- javax.resource.spi.ResourceAdapterインタフェースのstartメソッドが呼び出され,リソースアダプタが開始されます。
このメソッドの呼び出しによって例外がスローされた場合は,リソースアダプタの開始が失敗します※。このとき,KDJE48590-Eのメッセージが出力されます。
- 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メソッドの呼び出しに対して例外がスローされた場合
- 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のメッセージが出力されます。ただし,処理は継続されます。
- 注※
- アプリケーションに含まれるリソースアダプタの場合,リソースアダプタの開始が失敗したときには,そのリソースアダプタを含むアプリケーションの開始処理も失敗します。
●リソースアダプタの停止処理を実行した場合の制御
リソースアダプタの停止処理を実行した場合の制御を次の図に示します。
図9-26 リソースアダプタの停止処理を実行した場合の制御
リソースアダプタの停止処理によって実行される制御について説明します。なお,項番は図中の数字と対応しています。
- 停止するリソースアダプタを参照しているEJB,サーブレット,Message-driven Beanがすべて停止していることが確認されます。
次の要素が使用されていないことが確認されます。
- Inboundリソースアダプタ
- コネクションファクトリ
- 管理対象オブジェクト
これらが使用されていた場合は,リソースアダプタの停止処理が中止されます。
- AdminObjectJavaBean(管理対象オブジェクト)が破棄されます。
- javax.resource.spi.ResourceAdapterインタフェースのstopメソッドが呼び出され,リソースアダプタが停止します。
このメソッドの呼び出しによって例外がスローされた場合は,KDJE48590-Eのメッセージが出力されて,リソースアダプタの停止処理が失敗します。
- ResourceAdapterJavaBeanが破棄されます。
●リソースアダプタの状態遷移
リソースアダプタは,リソースアダプタの開始処理または停止処理が実行されたタイミングで,「開始状態」または「停止状態」に遷移します。
リソースアダプタの状態遷移を次の図に示します。
図9-27 リソースアダプタの状態遷移
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.