A.2.4. JDBC ストア

JDBCStore実装は、JDBC データーベース内に永続オブジェクトのステートを格納します。Transactional Objects for Java APIと併せてJBDCStoreを利用している場合、ネスト化されたトランザクションもサポートされます。オブジェクトのステートはすべて、単一テーブル内にBinary Large Objects (BLOB)として格納されます。オブジェクトステートのサイズは、64k までに制限されています。この制限を越えたオブジェクトステートを保存しようとすると、例外がスローされ、このステートは格納されません。このトランザクションは強制的にロールバックされます。
JDBC オブジェクトストアを利用すると、アプリケーションは、com.arjuna.ats.arjuna.objectstoreパッケージに置かれているJDBCAccess インターフェースの実装を提供する必要があります。例A.2「JDBCAccess 実装の例」を参照してください。

例A.2 JDBCAccess 実装の例

	  public interface JDBCAccess
	  {
	  public Connection getConnection () throws SQLException;
	  public void putConnection (Connection conn) throws SQLException;
	  public void initialise (ObjectName objName);
	  }
JDBCAccess クラスの実装により、JDBC ObjectStore で利用するConnection が提供され、オブジェクトステートを保存、リストアできます。詳細についてはJDBCAccess Connection メソッド を参照してください。

JDBCAccess Connection メソッド

getConnection
使用するConnection を返します。接続が必要な場合はいつでも、このメソッドが呼び出され、この実装はどの接続を返すかを決定する際に必要なポリシーを使うはずです。このメソッドは同じConnection メソッドを1回以上返す必要はありません。
putConnection
getConnectionから取得したConnection の1つを返します。これらを利用中にエラーが発生するとConnection が返されます。
initialise
実装に対する追加の任意情報を渡します。
JDBC オブジェクトストアは最初に、com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeInitialプロパティで定義されているConnections の数をリクエストし、com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum プロパティにて定義されているもののみ利用します。
使用するJDBCAccessインターフェースの実装は、com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess プロパティ変数にて設定する必要があります。
このオブジェクトストアの種類は、JDBCStoreです。
JDBCオブジェクトストアは、トランザクションログを管理できます。トランザクションログの実装は、 JDBCActionStoreに設定し、JDBCAccess メソッドはcom.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess プロパティ経由から提供します。デフォルトのテーブル名は、JBossTSTxTableとなっています。

注記

ユーザーオブジェクトストアとトランザクションログの両方に対してJDBCAccess 実装を利用することができます。