• 検索結果がありません。

UNIX

ドキュメント内 jdbc.book (ページ 185-188)

.

soま たは .sl

の ロー ド が失敗し た こ と を示すエ ラー メ ッ セージが表示 さ れた場

合は、LD_LIBRARY_PATH または SHLIB_PATHで 32 ビ ッ ト データベース関連の フ ァ イ ルを指定し て く だ さ い。

コー ド セ ッ ト のサポー ト

WebLogic

では、 Oracle の コー ド セ ッ ト がサポー ト さ れています。 ただ し、 次の こ と に注意し て く だ さ い。

NLS_LANG

環境変数が設定 さ れていないか、 US7ASCII または

WE8ISO8859-1

に設定 さ れてい る場合、 ド ラ イ バは常に 8859-1 で機能し ま す。

NLS_LANG 環境変数がデータベースで使用する コー ド セ ッ ト 以外の値に設

定さ れてい る場合、 Oracle Thin Driver および WebLogic jDriver for Oracle で は、 ク ラ イ アン ト コー ド セ ッ ト を使用し て、 データベースへの書き込みを行 います。

詳細については、 「WebLogic jDriver for Oracle の使い方」 の 「コー ド セ ッ ト のサ ポー ト 」 を参照し て く だ さ い。

UNIX での Oracle に関わる他の問題

使用する ス レ ッデ ィ ング モデルをチェ ッ ク し て く だ さ い。 グ リ ーン ス レ ッ ド は、

OCI

で使用さ れ る カーネル ス レ ッ ド と 衝突し ます。 Oracle ド ラ イ バを使用する 場合は、 ネ イ テ ィ ブ ス レ ッ ド を使用する こ と をお勧め し ます。 ネ イ テ ィ ブ ス レ ッ ド の使用を指定するには、 Java を起動する と きに -native

フ ラ グ を追加し

ます。

UNIX でのスレ ッ ド 関連の問題

UNIX では、 グ リ ーン ス レ ッ ド と ネ イ テ ィ ブ ス レ ッ ド と い う 2 つのス レ ッ デ ィ

ング モデルを利用でき ます。 詳細については、 Sun の Web サ イ ト で提供 さ れて い る Solaris 環境用の JDK を参照し て く だ さ い。

使用し ている ス レ ッ ド の種類は、THREADS_TYPE環境変数を調べる こ と で確認で き ます。 こ の変数が設定 さ れていない場合は、 Java の bin デ ィ レ ク ト リ にあ る シ ェル ス ク リ プ ト を調べて く だ さ い。

一部の問題は、 各オペレーテ ィ ング シ ス テムの JVM でのス レ ッ ド の実装に関連 し てい ます。 すべての JVM で、 オペレーテ ィ ン グ シ ス テ ム固有のス レ ッ ド の問 題が等し く 適切に処理さ れる わけではあ り ません。 以下に、 ス レ ッ ド関連の問題 を防止する ための ヒ ン ト を紹介し ます。

Oracle

ド ラ イ バを使用する場合は、 ネ イ テ ィ ブ ス レ ッ ド を使用し ます。

HP UNIX

を使用する場合は、 バージ ョ ン 11.x にア ッ プグ レー ド する。 HP

UX 10.20

な どの旧バージ ョ ンでは JVM と の互換性に問題があ り ます。

HP UNIX

の場合、 新し い JDK ではグ リ ーン ス レ ッ ド ラ イ ブ ラ リ が SHLIB_PATH

に追加さ れません。 現在の JDK では、

SHLIB_PATH

で定義さ れ

たパスにない限 り 、 共有ラ イ ブ ラ リ (.sl

)

を見つけ る こ と ができ ません。

SHLIB_PATHの現在の値を確認するには、 コ マン ド ラ イ ンで次の よ う に入力 し ます。

$ echo $SHLIB_PATH

set

コマン ド ま たは

setenvコ マン ド ( ど ち ら を使用する かはシ ェルに よ る ) を使用する と 、 シ ンボル SHLIB_PATHで定義さ れたパスに WebLogic の共有 ラ イ ブ ラ リ を追加で き ます。SHLIB_PATH

で定義さ れていない場所にあ る共

有 ラ イ ブ ラ リ を認識さ せるには、 シ ス テ ム管理者に連絡する必要があ り ま す。

JDBC

の ト ラ ブルシ ュ ー テ ィ ン グ

JDBC オブジ ェ ク ト を閉じ る

プ ロ グ ラ ムが効率的に実行 さ れる よ う に、ConnectionStatement

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 オブジ ェ ク ト の破棄

次の よ う なや り 方も避けて く だ さ い ( 破棄さ れ る JDBC オブジ ェ ク ト が作成 さ れ ます )。

//これは実行しない stmt.executeQuery();

rs = stmt.getResultSet();

//代わりにこれを実行する rs = stmt.executeQuery();

こ の例の最初の行では、 失われ、 すぐにガベージ コ レ ク シ ョ ン さ れる結果セ ッ ト が作成さ れます。

2

番目の行の動作は、 どのサービ ス パ ッ ク の WebLogic Server を実行し てい るの かに よ っ て異な り ます。 7.0SP2 よ り 前の WebLogic Server では、 オ リ ジナル オブ ジ ェ ク ト の ク ローンが返 さ れてい ま し た ( こ の場合 も ガベージ コ レ ク シ ョ ンの対 象にな り ます )。 7.0SP2 以降の WebLogic Server ではオ リ ジナル オブジ ェ ク ト が 返 さ れ、 ま た、 オブジ ェ ク ト は使用 さ れな く な る までガベージ コ レ ク シ ョ ン さ れません。

UNIX での共有ラ イ ブ ラ リ に関連する問題の ト ラ ブルシ ューテ ィ ング

ネ イ テ ィ ブの 2 層 JDBC ド ラ イバを イ ン ス ト ールする と き、 パフ ォーマン ス パ ッ ク を使用する よ う に WebLogic Server を コ ン フ ィ グ レーシ ョ ンする と き、 ま たは UNIX で BEA WebLogic Server を Web サーバ と し て設定する と き には、 シ ス テムで共有ラ イ ブ ラ リ ま たは共有オブジ ェ ク ト (WebLogic Server ソ フ ト ウ ェ ア と 一緒に配布さ れ る ) を イ ン ス ト ール し ます。 こ こ では、 予期 さ れる問題につ いて説明し、 それ ら の問題の解決策を提案し ます。

オペレーテ ィ ング シ ス テ ムの ローダでは、 さ ま ざ ま な場所で ラ イ ブ ラ リ が検索 さ れます。 ローダの動作は、 UNIX の種類に よ って異な り ます。 以降の節では、

Solaris

と HP-UX について説明し ます。

ドキュメント内 jdbc.book (ページ 185-188)