Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
ここでは,CJPAプロバイダを使用するための前提条件について説明します。
CJPAプロバイダを利用するコンポーネントは,EJBの場合はEJB 3.0以降,Webコンポーネントの場合はServlet 2.5以降となります。使用できるコンポーネントの詳細については,「5.3.2 使用できるコンポーネント」を参照してください。
CJPAプロバイダを使用する場合,次に示すデータベースに接続できます。
CJPAプロバイダは,DB Connectorを使用してデータベースを更新します。CJPAプロバイダでは次の表に示すDB Connectorを使用できます。
表6-3 CJPAプロバイダで使用できるDB Connector
使用するデータベース | トランザクションタイプ | 使用できるDB Connector |
---|---|---|
Oracle | LocalTransaction NoTransaction |
DBConnector_Oracle_CP.rar |
XATransaction | DBConnector_Oracle_XA.rar | |
Oracle RAC | LocalTransaction NoTransaction |
DBConnector_Oracle_CP.rar DBConnector_CP_ClusterPool_Root.rar DBConnector_Oracle_CP_ClusterPool_Member.rar |
HiRDB | LocalTransaction NoTransaction |
DBConnector_HiRDB_Type4_CP.rar |
XATransaction | DBConnector_HiRDB_Type4_XA.rar |
次の環境ではCJPAプロバイダを使用できません。
CJPAプロバイダでは,OneToOneおよびManyToOneのLAZYフェッチの場合,アクセサメソッドに独自のバイナリコードを埋め込みます。これによって,アクセサメソッドがメソッドキャンセルの対象になります。このため,OneToOneリレーションシップ,またはManyToOneリレーションシップでLAZYフェッチが指定されている場合は,エンティティクラス,埋め込み可能クラス,およびマップドスーパークラスを保護区に登録する必要があります。
なお,保護区に登録しない場合は,埋め込んだバイナリコード上でメソッドキャンセルが起こるおそれがあります。保護区に登録しない場合の動作は保証しません。
保護区に登録されている場合でも,登録されていない場合でも,メソッドタイムアウトで下記のようなスタックトレースが出力されます。ただし,保護区に登録しているとメソッドキャンセルは発生しません。
次に示す例では,ユーザが呼び出したEntityClass1.getMappingClass2メソッドの延長で,埋め込んだEntityClass1._toplink_getmappingClass2が呼ばれています。そこでメソッドタイムアウトが発生していますが,メソッドキャンセルは発生しません。
message-id message(LANG=ja) KDJE52703-W A timeout occurred while the user program was executing. (threadID = 23794987, rootAPInfo = 10.209.11.124/5964/0x4828eb62000128e0, application = JPA_JavaEE_TP, bean = TestBean, method = doTest) jpa.test.annotation.onetoone.entity.EntityClass1._toplink_getmappingClass2(EntityClass1.java) locals: (jpa.test.annotation.onetoone.entity.EntityClass1) this = <0x11e35878> (jpa.test.annotation.onetoone.entity.EntityClass1) at jpa.test.annotation.onetoone.entity.EntityClass1.getMappingClass2(EntityClass1.java:34) locals: (jpa.test.annotation.onetoone.entity.EntityClass1) this = <0x11e35878> (jpa.test.annotation.onetoone.entity.EntityClass1) |
保護区への登録については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.6 criticalList.cfg(保護区リストファイル)」を参照してください。
CJPAプロバイダを使用する場合,アノテーションの参照抑止機能は使用できません。アノテーションの参照抑止機能が有効になっていると,永続化コンテキストおよび永続化ユニットの参照を定義できません。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.