TimesTenでのJTAの実装では、Sun社がJavaトランザクションAPI(JTA)仕様で指定しているAPIと一貫性のあるAPIが提供されます。TimesTen JTAは、JDK 1.4以上で動作します。
この項では、TimesTen JTAを使用するときに理解しておく必要がある項目について説明します。
理解しておく必要がある項目
|
参照先
|
---|---|
XAを使用するときにTimesTenデータ・ストア属性を設定する方法 | |
インポートするJavaパッケージ | 「必要なパッケージ」 |
TimesTen XAConnectionオブジェクトを作成する方法 | |
インダウト・グローバル・トランザクションをリカバリする方法 | |
BEA WebLogicへのTimesTen DSNを登録する方法 | |
TimesTen XA固有のエラー・メッセージ | 「エラー処理」 |
この項では、次のドキュメントで使用するTimesTenの情報について説明します。
BEAの『Programming WebLogic JTA』ドキュメントについては、次のURLを参照してください。
http://e-docs.bea.com/wls/docs61/jta/index.htmlSun社のJTAリファレンス・ページ:
http://java.sun.com/products/jta/javadocs-1.0.1/index.htmlSun社のJDBCリファレンス・ページ:
http://java.sun.com/products/jdbc/jdbc20.stdext.javadoc/
TimesTen JDBCおよびXAのパッケージは、次から入手できます。
com.timesten.jdbc.*; com.timesten.jdbc.xa.*;アプリケーションで次のパッケージをインポートする必要があります。
import java.sql.*; import javax.sql.*; import javax.transaction.xa.*;
XAデータソースへの接続は、XADataSourceオブジェクトを介して確立されます。TimesTenXADataSourceオブジェクトをコネクション・ファクトリとして使用すると、TimesTenデータソースに対して新規のXAConnectionオブジェクトを作成できます。TimesTenXADataSourceは、次のjavax.sql.XADataSourceインタフェースを実装します。
http://java.sun.com/j2se/1.4.2/docs/api/javax/sql/XADataSource.html新規のTimesTenXADataSourceインスタンスを作成した後、setUrl()メソッドを使用してTimesTenデータ・ストアを指定します。URLは次のとおりです。
直接接続の場合:
jdbc:timesten:direct:DSNnameクライアント接続の場合:
jdbc:timesten:client:DSNnameオプションで、setUser()およびsetPassword()メソッドを使用して、特定のユーザーのIDおよびパスワードを設定することもできます。
この例では、TimesTenXADataSourceオブジェクトをファクトリとして使用し、新規のTimesTen XAデータソース・オブジェクトを作成します。次に、このTimesTenXADataSourceインスタンスのTimesTen DSN(dsn1)、ユーザー名(myName)およびパスワード(myPasswd)を識別するURLを設定します。
次に、getXAConnection()メソッドを使用して、オブジェクトへのxaConnという名前の接続を返します。
TimesTenXADataSource xads = (TimesTenXADataSource) new XADataSource(); xads.setUrl("jdbc:timesten:direct:dsn1"); xads.setUser("myName"); xads.setPassword("myPassword"); XAConnection xaConn = null; try { xaConn = xads.getXAConnection(); } catch (SQLException e){ e.printStackTrace(); return; }XAデータソース・オブジェクトへの複数の接続を確立することができます。例4.1では、2つ目の接続xaConn2を確立します。
XAConnection xaConn = null; XAConnection xaConn2 = null; try { xaConn = xads.getXAConnection(); xaConn2 = xads.getXAConnection(); }
この例では、dsn1およびdsn2という名前のTimesTenデータソースに対して2つのTimesTenXADataSourceインスタンスを作成します。次に、dsn1に対して1つの接続、dsn2に対して2つの接続を確立します。すべての接続は、同じリソース・マネージャを指しています。
TimesTenXADataSource xads = (TimesTenXADataSource) new XADataSource(); xads.setUrl("jdbc:timesten:direct:dsn1"); xads.setUser("myName"); xads.setPassword("myPassword"); XAConnection xaConn1 = null; XAConnection xaConn2 = null; XAConnection xaConn3 = null; try { xaConn1 = xads.getXAConnection(); // connect to dsn1 } catch (SQLException e){ e.printStackTrace(); return; } xads.setUrl("jdbc:timesten:direct:dsn2"); xads.setUser("myName"); xads.setPassword("myPassword"); try { xaConn2 = xads.getXAConnection(); // connect to dsn2 xaConn3 = xads.getXAConnection(); // connect to dsn2 } catch (SQLException e){ e.printStackTrace(); return; }
getXAConnection()を使用してXAConnectionを取得した後、getXAResource()を使用してXAResourceオブジェクトを取得し、getConnection()を使用してConnectionオブジェクトを取得できます。
//get an XAResource XAResource xaRes = null; try { xaRes = xaConn.getXAResource(); }catch (SQLException e){ e.printStackTrace(); return; } //get an underlying physical Connection Connection conn = null; try { conn = xaConn.getConnection(); }catch (SQLException e){ e.printStackTrace(); return; }これで、ローカル・トランザクションとグローバル・トランザクションの両方で、同じ接続connを使用できます。ただし、次のことに注意してください。
BEA WebLogicサーバーにデータソースを登録する一般的なプロセスは、『WebLogic Server Administration Guide』のJDBC接続の管理に関する項を参照してください。URLは次のとおりです。
http://edocs.bea.com/wls/docs61/adminguide/jdbc.html#1074927WebLogicサーバーにTimesTen JDBCドライバを登録するには、次の手順を実行します。
CLASSPATHにTimesTenの\jdbc\lib\classes14.jarファイルの場所を含めるように、WebLogicのstartWebLogic.sh(UNIX)またはstartWeblogic.cmd(Windows)スクリプト・ファイルを編集します。
たとえば、NTでは次のようになります。
TimesTenデータ・ストアのURLおよびTimesTenXaDataSourceドライバ・クラスを含めるように、接続プールを構成します。
Property Name Property value Name TimesTenXAPool URL jdbc:timesten:dsn1 Driver Class Name com.timesten.jdbc.xa.TimesTenXADataSource initial capacity 1 maxCapacity 10 CapacityIncrement 1 Properties url=jdbc:timesten:dsn1;user=user1;password=pwd1
接続プールに対してTxDataSourceを構成します。