5.3.3. XADataSources

適切なDataSource からJDBC 2.0 接続が作成されます。XADataSourcesから、拡散トランザクション内で参加するこれらの接続を取得します。JBossJTA は、データベースへの接続が確立されると、適切なDataSource を使い、XAResources を取得しJTAインターフェースを使ってトランザクションに問うとくします。トランザクションサービスは、トランザクション終了時にこれらのXAResourcesを利用することで、データベースをトリガーしJDBC 接続経由で追加された変更をコミットあるいはロールバックします。
JBossJTA JDBC 2.0 ドライバを取得するには2種類の方法があります。単純化するため、JDBC 2.0 ドライバはアプリケーションが直接インスタンス化するものと仮定されています。

5.3.3.1. Java Naming and Directory Interface (JNDI)

JDBC ドライバが実装固有の詳細を把握することなしに、任意のDataSource を利用できるようにJNDI を使います。特定の (XA) DataSource を作成し、適切なJNDI 実装に登録することができるため、アプリケーションかJDBC ドライバがそのDataSource をバインドあるいは利用することができます。アプリケーションが実装クラスのインスタンスではなくインターフェースのインタンスとして(XA)DataSource を見るようにJNDIが制限をかけているため、アプリケーションは特定の (XA)DataSource実装以外も利用できるようになっています。
TransactionalDriver クラスを作成するには、JNDI に登録されているXADataSource (XADataSource インタンスを作成し、適切なJNDI 実装に保存する必要があり) を使います。
XADataSource ds = MyXADataSource();
Hashtable env = new Hashtable();
String initialCtx = PropertyManager.getProperty("Context.INITIAL_CONTEXT_FACTORY");
	  
env.put(Context.INITIAL_CONTEXT_FACTORY, initialCtx);
	  
initialContext ctx = new InitialContext(env);
	  
ctx.bind("jdbc/foo", ds);
Context.INITIAL_CONTEXT_FACTORY プロパティは、利用したいJNDI 実装の種類をJNDIが指定する方法を示しています。
次のステップは、アプリケーションが適切な接続URLをJDBC 2.0 ドライバに渡す必要があります。
Properties dbProps = new Properties();
	  
dbProps.setProperty(TransactionalDriver.userName, "user");
dbProps.setProperty(TransactionalDriver.password, "password");
	  
TransactionalDriver arjunaJDBC2Driver = new TransactionalDriver();
Connection connection = arjunaJDBC2Driver.connect("jdbc:arjuna:jdbc/foo", dbProps);
このDataSource がトランザクションに参加し駆動する必要があるとArjunaJDBC2Driver インターフェースが認識できるように、JNDI URL はjdbc:arjuna:から始める必要があります。