Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

付録I.5 JDBC2.0拡張機能を使用したデータベース接続の設定

JDBC2.0拡張機能で提供するJNDI連携機能を使用した,データベースへ接続する操作について説明します。なお,DataSourceクラスのインタフェース定義およびJNDIを,JDKでは標準で提供していません。JNDI連携機能を使用するときは,JavaSoftのホームページから入手しておいてください。この機能はCosminexusのJ2EEサーバモード,DB Connectorを使用する場合は,アプリケーションで設定する必要はありません。

<この項の構成>
(1) DataSourceオブジェクトの生成
(2) データベースに接続するための各種情報の設定
(3) JNDIへの情報の登録
(4) JNDIからの情報の取得
(5) データベースへの接続
(6) JDBC2.0拡張機能で提供する機能のトレースを取得するための情報の指定

(1) DataSourceオブジェクトの生成

接続情報の設定は,DataSourceオブジェクトで実行します。

DataSourceオブジェクトの生成で必要な,ドライバ拡張機能のパッケージ名称およびDataSourceクラス名称を次に示します。

指定項目 指定値
パッケージ名称 JP.co.Hitachi.soft.DBPSV_Driver
DataSourceクラス名称 JdbcDbpsvDataSource

DataSourceオブジェクトの生成例を次に示します。

JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDataSource  ds = null ;
ds = new JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDataSource() ;

(2) データベースに接続するための各種情報の設定

データベースに接続するための各種情報は,JDBC2.0拡張機能で提供するメソッドで設定します。提供するメソッドを次の表に示します。

表I-27  各種情報を設定するメソッド

メソッド 機能
setNetworkProtocol DABrokerとの接続種別を設定します。
setServerName 接続するDABrokerのホスト名を設定します。
setPortNumber 接続するDABrokerのポート番号を設定します。
setDatabaseName 接続するデータベースの種別を設定します。
setDescription 接続するデータベースに必要な接続付加情報を設定します。
setDBHostName 接続するHiRDBのホスト名を設定します。
setDBEnv DABrokerの接続先データベース定義情報を設定します。
setEncodLang エンコード文字形態を設定します。
setJDBC_IF_TRC JDBCインタフェースメソッドトレースの取得の有無を設定します。
setSV_EVENT_TRC DABrokerとのイベントトレースの取得の有無を設定します。
setTRC_NO トレースのエントリ数を設定します。
setUapName アプリケーション名称を設定します。
setBufSize DABrokerからの受信データのバッファ長を設定します。
setUser データベース接続のユーザIDを設定します。
setPassword データベース接続のパスワードを設定します。
setXAOpenString XA_OPEN文字列を設定します。
setXACloseString XA_CLOSE文字列を設定します。
setRMID リソースマネージャの識別子を設定します。
setXAThreadMode XA使用時のスレッドモードを設定します。
setXALocalCommitMode XA使用時,データベースのオートコミットを有効にするかどうかを設定します。
setRowSize JDBCで取り扱うバッファ長を指定します。
setOSAuthorize OS認証機能を使用してデータベースに接続するかどうかを設定します。
setSQLWarningIgnore データベースから返される警告をConnectionクラスで保持するかどうかの情報を設定します。
setHiRDBCursorMode 接続データベースがHiRDBの場合,検索時にカーソルが複数のCommitにわたって有効かどうかを設定します。
setNotErrorOccurred connectionErrorOccurredが呼ばれるかどうかを設定します。
setBlockUpdate 接続データベースがHiRDBの場合,?パラメタを使用したデータベースの更新で,複数のパラメタセットを一度に処理するかどうかを設定します。
setExecuteDirectMode 接続データベースがHiRDBの場合,Statementクラスを使用したデータベースの更新でHiRDBのExecute Direct機能を使用するかどうかを設定します。
setLONGVARBINARY_Access HiRDBでLONVARBINARY(列属性BLOB,列属性BINARY)へのアクセス方法を設定します。
setBufferPoolSize DABrokerからの受信データのバッファプール数を設定します。

注※
JdbcDbpsvXADataSourceクラスでだけ提供するメソッドです。

JDBC2.0拡張機能では,接続情報を取得するためのメソッドも提供しています。接続情報を取得するためのメソッドを次の表に示します。

表I-28  各種情報を取得するメソッド

メソッド 機能
getNetworkProtocol DABrokerとの接続種別を取得します。
getServerName 接続するDABrokerのホスト名を取得します。
getPortNumber 接続するDABrokerのポート番号を取得します。
getDatabaseName 接続するデータベースの種別を取得します。
getDescription 接続するデータベースに必要な接続付加情報を取得します。
getDBHostName 接続するHiRDBのホスト名を取得します。
getDBEnv DABrokerの接続先データベース定義情報を取得します。
getEncodLang エンコード文字形態を取得します。
getJDBC_IF_TRC JDBCインタフェースメソッドトレースの取得の有無を取得します。
getSV_EVENT_TRC DABrokerとのイベントトレースの取得の有無を取得します。
getTRC_NO トレースのエントリ数を取得します。
getUapName アプリケーション名称を取得します。
getBufSize DABrokerからの受信データのバッファ長を取得します。
getUser データベース接続のユーザIDを取得します。
getPassword データベース接続のパスワードを取得します。
getXAOpenString XA_OPEN文字列を取得します。
getXACloseString XA_CLOSE文字列を取得します。
getRMID リソースマネージャの識別子を取得します。
getXAThreadMode XA使用時のスレッドモードを取得します。
getXALocalCommitMode XA使用時,データベースのオートコミットを有効にしているかどうかの設定を取得します。
getRowSize JDBCで取り扱うバッファ長を取得します。
getOSAuthorize OS認証機能を使用してデータベースに接続するかどうかの設定を取得します。
getSQLWarningIgnore データベースから返される警告をConnectionクラスで保持するかどうかの情報を取得します。
getHiRDBCursorMode 接続データベースがHiRDBの場合,検索時にカーソルが複数のCommit,またはRollbackにわたって有効かどうかの設定を取得します。
getNotErrorOccurred connectionErrorOccurredが呼ばれるかどうかの設定を取得します。
getBlockUpdate 接続データベースがHiRDBの場合,?パラメタを使用したデータベースの更新で,複数のパラメタセットを一度に処理するかどうかの設定を取得します。
getExecuteDirectMode 接続データベースがHiRDBの場合,Statementクラスを使用したデータベースの更新でHiRDBのExecute Direct機能を使用するかどうかの設定を取得します。
getLONGVARBINARY_Access HiRDBでLONVARBINARY(列属性BLOB,列属性BINARY)へのアクセス方法を取得します。
getBufferPoolSize DABrokerからの受信データのバッファプール数を取得します。

注※
JdbcDbpsvXADataSourceクラスでだけ提供するメソッドです。

各メソッドの機能および文法については,マニュアル「Cosminexus リファレンス API編」を参照してください。

(3) JNDIへの情報の登録

接続情報を設定したDataSourceオブジェクトを,JNDIに登録します。JNDIは実行環境によって,幾つかのサービスプロバイダを選択できます。

File Systemサービスプロバイダを使用するJNDIへの登録例を次に示します。ほかのサービスプロバイダへの登録については,JNDIのドキュメントを参照してください。なお,JNDIに登録するときの論理名称は,"jdbc"というサブコンテキスト(登録例ではjdbc/TestDataSource)の下に登録するようにしてください。

// JDBC2.0拡張機能が提供するDataSourceオブジェクトを生成する
JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDataSource  ds;
ds = new JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDataSource();
 
// 接続情報を設定する
   :
// システムプロパティを取得する
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:"+File.separator + "JNDI_DIR");
 
//システムプロパティを更新する
System.setProperties(sys_prop);
 
// JNDIを初期化する
Context ctx = new InitialContext();
 
// JDBC2.0拡張機能が提供するDataSourceオブジェクトを,
// jdbc/TestDataSourceという論理名称でJNDIに登録する
ctx.bind("jdbc" + File.separator + "TestDataSource", ds);
   :

(4) JNDIからの情報の取得

データベースに接続するときに,JNDIに登録したDataSourceオブジェクトを取得します。

File Systemサービスプロバイダを使用するJNDIから,DataSourceオブジェクトを取得する例を次に示します。ほかのサービスプロバイダから取得する方法については,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:"+File.separator + "JNDI_DIR");
 
// システムプロパティを更新する
System.setProperties(sys_prop);
 
// JNDIを初期化する
Context ctx = new InitialContext();
 
//jdbc/TestDataSourceという論理名称のオブジェクトをJNDIから取得する
Object obj = ctx.lookup("jdbc" + File.separator + "TestDataSource");
 
// 取り出したオブジェクトを,DataSourceクラスの型にキャストする
DataSource ds = (DataSource)obj;
   :

(5) データベースへの接続

JNDIに登録したDataSourceオブジェクトを取得後,DataSourceオブジェクトに対し,getConnectionメソッドを呼び出して,データベースへ接続します。

getConnectionメソッドの呼び出し例を次に示します。

DataSource ds
 
// JNDIからDataSourceオブジェクトを取得する
   :
// getConnectionメソッドを呼び出す
Connection con = ds.getConnection("USERID","PASSWORD")

注※
getConnectionメソッドの引数(ユーザID,パスワード)は省略できます。引数を指定した場合は,DataSourceオブジェクトに設定した接続情報よりも優先されます。

必要な接続情報がDataSourceオブジェクトに設定されていない場合,接続情報の内容が不正な場合,データベースとの接続に失敗した場合は,getConnectionメソッドはSQLExceptionをthrowします。

JNDIからDataSourceオブジェクトを取得したあと,接続情報を設定し直すことができます。設定し直す場合は,DataSourceオブジェクトをJDBC2.0拡張機能が提供するDataSourceクラスの型にキャストします。キャストする例を次に示します。

DataSource ds
JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDataSource  dbp_ds;
 
// JNDIからDataSourceオブジェクトを取得する
   :
// DataSourceオブジェクトを,JDBC拡張機能が提供する
// DataSourceクラスの型にキャストする
dbp_ds = (JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDataSource)ds;
 
// 接続情報を再設定する
   :

(6) JDBC2.0拡張機能で提供する機能のトレースを取得するための情報の指定

JDBC2.0拡張機能では,次のトレースを取得できます。トレースの出力内容については,マニュアル「Cosminexus システム運用ガイド」を参照してください。

(a) トレースの取得

トレースを取得する場合は,次の項目を設定してください。次の項目が設定されていない場合は,トレースを取得できません。

(b) トレース取得時の注意事項

setLogWriterメソッドで指定したログストリームは,JNDIには登録されません。トレースの取得は,JNDIからDataSourceオブジェクトを取得するたびに,setLogWriterメソッドで指定してください。