ヘッダーをスキップ
Oracle TimesTen In-Memory Database Java開発者およびリファレンス・ガイド
リリース6.0
B25766-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

JTA APIの使用

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.html 
 

Sun社のJTAリファレンス・ページ:

http://java.sun.com/products/jta/javadocs-1.0.1/index.html

Sun社の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.*;

TimesTen XAConnectionオブジェクトの作成

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およびパスワードを設定することもできます。

例4.1

この例では、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(); }
例4.2

この例では、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; 
} 
注意: XAConnectionが確立されると、自動コミットはオフになります。

XAResourceおよびConnectionオブジェクトの作成

getXAConnection()を使用してXAConnectionを取得した後、getXAResource()を使用してXAResourceオブジェクトを取得し、getConnection()を使用してConnectionオブジェクトを取得できます。

例4.3
//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サーバーへのTimesTen XADataSourceの登録

注意: TimesTen JTAでは、Sun SolarisおよびWindowsプラットフォーム上のBEA WebLogicサーバーで動作すると記述されていますが、TimesTenでは、TimesTenでのJTA実装以外のDTPソフトウェアの操作は保証されていません。

BEA WebLogicサーバーにデータソースを登録する一般的なプロセスは、『WebLogic Server Administration Guide』のJDBC接続の管理に関する項を参照してください。URLは次のとおりです。

http://edocs.bea.com/wls/docs61/adminguide/jdbc.html#1074927 
 

WebLogicサーバーにTimesTen JDBCドライバを登録するには、次の手順を実行します。

startWebLogicスクリプト・ファイルでのCLASSPATHの設定

CLASSPATHにTimesTenの\jdbc\lib\classes14.jarファイルの場所を含めるように、WebLogicのstartWebLogic.sh(UNIX)またはstartWeblogic.cmd(Windows)スクリプト・ファイルを編集します。

たとえば、NTでは次のようになります。

set CLASSPATH=...;c:\TimesTen\TimesTen6.0\jdbc\lib\classes14.jar 

接続プールの構成

TimesTenデータ・ストアのURLおよびTimesTenXaDataSourceドライバ・クラスを含めるように、接続プールを構成します。

例4.4
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 
注意: すべてのバージョンのWebLogicに対応するには、URLとPropertiesの両方に対してJDBC URLを指定する必要があります。

TxDataSourceの構成

接続プールに対してTxDataSourceを構成します。

例4.5
Property Name          Property value 
Name                   ttxads 
targets                myserver 
jndiName               jta.ttxads 
poolname               TimesTenXAPool