WebLogic JDBC プログラマーズ ガイド
![]() |
![]() |
![]() |
![]() |
以下の節では、JDBC 接続に関する一般的な問題について説明します。
使用するスレッディング モデルを確認してください。グリーン スレッドは、OCI で使用されるカーネル スレッドと衝突します。Oracle ドライバを使用する場合は、ネイティブ スレッドを使用することをお勧めします。ネイティブ スレッドの使用を指定するには、Java を起動するときに -native
フラグを追加します。
UNIX では、グリーン スレッドとネイティブ スレッドという 2 つのスレッディング モデルを利用できます。詳細については、Sun の Web サイトで提供されている Solaris オペレーティング環境用の JDK を参照してください。
使用しているスレッドの種類は、THREADS_TYPE
環境変数を調べることで確認できます。この変数が設定されていない場合は、Java の bin ディレクトリにあるシェル スクリプトを調べてください。
一部の問題は、各オペレーティング システムの JVM でのスレッドの実装に関連しています。すべての JVM で、オペレーティング システム固有のスレッドの問題が等しく適切に処理されるわけではありません。以下に、スレッド関連の問題を防止するためのヒントを紹介します。
SHLIB_PATH
に追加されない。現在の JDK では、SHLIB_PATH
で定義されたパスにある場合を除いて、共有ライブラリ (.sl
) を見つけられません。SHLIB_PATH
の現在の値を確認するには、コマンドラインで次のように入力します。
$ echo $SHLIB_PATH
プログラムが効率的に実行されるように、Connection
、Statement
、ResultSet
などの JDBC オブジェクトは必ず finally
ブロックでクローズすることをお勧めします。次に、一般的な例を示します。
try {
Driver d =
(Driver)Class.forName("weblogic.jdbc.oci.Driver").newInstance();
Connection conn = d.connect
("jdbc:weblogic:oracle:myserver",
"scott", "tiger");
Statement stmt = conn.createStatement();
stmt.execute("select * from emp");
ResultSet rs = stmt.getResultSet();
// 処理を行う
}
catch (Exception e) {
// 必要に応じて例外を処理する
}
finally {
try {rs.close();}
catch (Exception rse) {}
try {stmt.close();}
catch (Exception sse) {}
try {conn.close();
catch (Exception cse) {}
}
また、次のような処理も行わないでください。破棄された JDBC オブジェクトが作成されます。
//このようには行わない
stmt.executeQuery();
rs = stmt.getResultSet();
//代わりに次のように行う
rs = stmt.executeQuery();
![]() |
![]() |
![]() |