Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 互換編


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

JDBC2.0拡張機能で提供するJNDI連携機能を使用した,データベースへ接続する操作について説明します。この機能はアプリケーションサーバのJ2EEサーバモード,DB Connectorを使用する場合は,アプリケーションで設定する必要はありません。

〈この項の構成〉

(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拡張機能で提供するメソッドで設定します。提供するメソッドを次の表に示します。

表18‒61  各種情報を設定するメソッド

メソッド

機能

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でLONGVARBINARY(列属性BLOB,列属性BINARY)へのアクセス方法を設定します。

setBufferPoolSize

DABrokerからの受信データのバッファプール数を設定します。

注※

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

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

表18‒62  各種情報を取得するメソッド

メソッド

機能

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でLONGVARBINARY(列属性BLOB,列属性BINARY)へのアクセス方法を取得します。

getBufferPoolSize

DABrokerからの受信データのバッファプール数を取得します。

注※

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

各メソッドの機能および文法については,マニュアル「アプリケーションサーバ リファレンス 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拡張機能では,次のトレースを取得できます。トレースの出力内容については,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「7. 性能解析トレースを使用した性能解析」を参照してください。

(a) トレースの取得

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

  • JdbcDbpsvDataSource,JdbcDbpsvConnectionPoolDataSourceまたはJdbcDbpsvXADataSourceクラスのsetLogWriterメソッドでの有効なログストリームの指定

  • setJDBC_IF_TRC,setSV_EVENT_TRCおよびsetTRC_NOメソッドで,トレース取得の指定

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

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