スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
DataSourceとJNDIを使用したDB接続は,JDBC2.0 Optional Packageで使用できるようになりました。
必ずしもJNDIを使用する必要はありませんが,JNDIを使用することで接続情報の設定が1回で済むというメリットがあります。DataSourceクラスのインタフェース定義,及びJNDIは,JDKに標準で含まれていないため,AP開発をする場合には,JavaSoftのWebサイトから入手する必要があります。
DataSourceとJNDIを使用したDB接続の手順を次に示します。
JNDIを使用しない場合は,3及び4の操作をする必要はありません。
JNDIを使用する場合,1〜3の操作は1回だけ実行します。その後,4及び5の操作をするだけで,DB接続ができます。また,4の操作の後,必要に応じて接続情報を変更できます。
JDBCドライバが提供する,DataSourceクラスのオブジェクトを生成します。
DataSourceクラスのオブジェクト生成で必要となる,JDBCドライバのDataSourceクラス名はJdbhDataSourceとなります。
DataSourceクラスのオブジェクトの生成例を次に示します。
JP.co.Hitachi.soft.HiRDB.JDBC.JdbhDataSource ds = null ; ds = new JP.co.Hitachi.soft.HiRDB.JDBC.JdbhDataSource() ; |
DataSourceオブジェクトに対して,接続情報設定用メソッドを呼び出し,接続情報の設定をします。接続情報取得用のメソッドも使用できるため,現在の接続情報の確認もできます。接続情報設定/取得メソッドについては,「17.11 接続情報設定/取得インタフェース」を参照してください。
DataSourceオブジェクトをJNDIに登録します。
JNDIは,その実行環境によって幾つかのサービスプロバイダを選択できます。
DataSourceオブジェクトのJNDIへの登録例を次に示します(Windowsの場合の例です)。なお,登録例では,サービスプロバイダの一つである,File Systemサービスプロバイダを使用しています。ほかのサービスプロバイダについては,JNDIのドキュメントを参照してください。
// JDBCドライバが提供するDataSourceクラスのオブジェクトを生成する
JP.co.Hitachi.soft.HiRDB.JDBC.JdbhDataSource ds;
ds = new JP.co.Hitachi.soft.HiRDB.JDBC.JdbhDataSource();
// 接続情報を設定する
:
// システムプロパティを取得する
Properties sys_prop = System.getProperties() ;
// File Systemサービスプロバイダのプロパティを設定する
sys_prop.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
// File Systemサービスプロバイダで使用するディレクトリを設定する
// (この場合,c:\JNDI_DIRの下に登録される)
sys_prop.put(Context.PROVIDER_URL, "file:c:\\" + "JNDI_DIR");
// システムプロパティを更新する
System.setProperties(sys_prop) ;
// JNDIを初期化する
Context ctx = new InitialContext();
// HiRDBドライバが提供するDataSourceクラスのオブジェクトを,
// jdbc/TestDataSourceという論理名称でJNDIに登録する
ctx.bind("jdbc" + "\\" + "TestDataSource", ds);
:
|
なお,JDBC2.0規格では,JNDIに登録する論理名称は,"jdbc"というサブコンテキスト下(登録例ではjdbc/TestDataSource)に登録するように推奨されています。
JNDIからDataSourceオブジェクトを取得します。
JNDIからのDataSourceオブジェクトの登録例を次に示します(Windowsの場合の例です)。なお,登録例では,サービスプロバイダの一つである,File Systemサービスプロバイダを使用しています。ほかのサービスプロバイダについては,JNDIのドキュメントを参照してください。
// システムプロパティを取得する
Properties sys_prop = System.getProperties() ;
// File Systemサービスプロバイダのプロパティを設定する
sys_prop.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
// File Systemサービスプロバイダで使用するディレクトリを設定する
// (この場合,c:\JNDI_DIRの下に登録されている)
sys_prop.put(Context.PROVIDER_URL, "file:c:\\" + "JNDI_DIR");
// システムプロパティを更新する
System.setProperties(sys_prop) ;
// JNDIを初期化する
Context ctx = new InitialContext();
// jdbc/TestDataSourceという論理名称のオブジェクトをJNDIから取得する
Object obj = ctx.lookup("jdbc" + "\\" + "TestDataSource") ;
// 取り出したオブジェクトを,DataSourceクラスの型にキャストする
DataSource ds = (DataSource)obj;
:
|
DataSourceオブジェクトに対して,getConnectionメソッドを呼び出します。
getConnectionメソッドの呼び出し例を次に示します。
DataSource ds
// JNDIからDataSourceオブジェクトを取得する
:
// getConnectionメソッドを発行する
Connection con = ds.getConnection();
又は
Connection con = ds.getConnection("USERID", "PASSWORD");※
|
JNDIからDataSourceオブジェクトを取得後,必要に応じて接続情報を再度設定できます。この場合,DataSourceオブジェクトを,JDBCドライバが提供するDataSourceクラスの型にキャストしてから設定する必要があります。例を次に示します。
DataSource ds
JP.co.Hitachi.soft.HiRDB.JDBC.JdbhDataSource hirdb_ds;
// JNDIからDataSourceオブジェクトを取得する
:
// DataSourceオブジェクトを,JDBCドライバが提供する
// DataSourceクラスの型にキャストする
dbp_ds = (JP.co.Hitachi.soft.HiRDB.JDBC.JdbhDataSource)ds;
// 接続情報を再設定する
:
|
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.