6.2.3 Cosminexus JPAプロバイダを使用するための前提条件

ここでは,Cosminexus JPAプロバイダを使用するための前提条件について説明します。

<この項の構成>
(1) 使用できるコンポーネント
(2) 接続できるデータベース
(3) 使用できるDB Connector
(4) 使用できない環境
(5) メソッドキャンセル機能の使用について
(6) アノテーションの参照抑止機能の使用について

(1) 使用できるコンポーネント

Cosminexus JPAプロバイダを利用するコンポーネントは,EJBの場合はEJB 3.0以降,Webコンポーネントの場合はServlet 2.5以降となります。使用できるコンポーネントの詳細については,「5.3.2 使用できるコンポーネント」を参照してください。

(2) 接続できるデータベース

Cosminexus JPAプロバイダを使用する場合,次に示すデータベースに接続できます。

(3) 使用できるDB Connector

Cosminexus JPAプロバイダは,DB Connectorを使用してデータベースを更新します。Cosminexus JPAプロバイダでは次の表に示すDB Connectorを使用できます。

表6-3 Cosminexus JPAプロバイダで使用できるDB Connector

使用するデータベーストランザクションタイプ使用できるDB Connector
OracleLocalTransaction
NoTransaction
DBConnector_Oracle_CP.rar
XATransactionDBConnector_Oracle_XA.rar
Oracle RACLocalTransaction
NoTransaction
DBConnector_Oracle_CP.rar
DBConnector_CP_ClusterPool_Root.rar
DBConnector_Oracle_CP_ClusterPool_Member.rar
HiRDBLocalTransaction
NoTransaction
DBConnector_HiRDB_Type4_CP.rar
XATransactionDBConnector_HiRDB_Type4_XA.rar

(4) 使用できない環境

次の環境ではCosminexus JPAプロバイダを使用できません。

(5) メソッドキャンセル機能の使用について

Cosminexus JPAプロバイダでは,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)

保護区への登録については,マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.6 criticalList.cfg(保護区リストファイル)」を参照してください。

(6) アノテーションの参照抑止機能の使用について

Cosminexus JPAプロバイダを使用する場合,アノテーションの参照抑止機能は使用できません。アノテーションの参照抑止機能が有効になっていると,永続化コンテキストおよび永続化ユニットの参照を定義できません。