- - PR -
servletからデータベースへの接続エラーについて教えてください
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-04 18:36
はじめまして。
突然ですが、教えてください。 webアプリケーション作成して、本番サーバーに移行中なのですが、 データベースに接続するサーブレットを呼び出したときに、エラーがでてしまいます。 エラーの内容は、 java.lang.UnsatisfiedLinkError: no ocijdbc9 in java.library.path となっています。 環境変数について調べたのですが、solarisの情報が多く、windowsでの解決策を 見出すことができませんでした。 ご教授よろしくお願いします。 〔環境〕 (APサーバ) OS windows2000server Tomcat5.5.17 Apache2.2.58 mo_jk2.so Oracle cliant (DBサーバ) OS Linux DB Oracle9i 9.2 以上です。 | ||||
|
投稿日時: 2006-10-04 19:17
環境変数の
JAVA_HOME PATH CLASSPATH は正しく設定されていますか? | ||||
|
投稿日時: 2006-10-04 19:17
APサーバのOracle cliantってのは、oracleのJDBCもインストールしてあるという前提で。
ocijdbc9.dllというライブラリが存在しないから、例外が発生しているようにスタックトレースからは見えます。 ファイルがあるのであれば、パスが通ってない可能性が高く、環境変数LD_LIBRARY_PATHか、JAVA_OPTSに"-Djava.library.path="の設定に、ocijdbc9.dllが格納されているディレクトリのパスを設定すれば解消すると思います。 --追加 http://72.14.235.104/search?q=cache:lHwNhp0GOI0J:myjdbc.tripod.com/basic/jdbcoci.html+ocijdbc9.dll+java.lang.UnsatisfiedLinkError&hl=ja&gl=jp&ct=clnk&cd=2 [ メッセージ編集済み 編集者: かしん 編集日時 2006-10-04 19:23 ] | ||||
|
投稿日時: 2006-10-05 00:31
PATH に %ORACLE_HOME%\lib か %ORACLE_HOME%\bin を追加すればよさそうですね。
ocijdbc9.dll を system32 あたりに放り込んでも解決しそうですが。 | ||||
|
投稿日時: 2006-10-05 11:25
アドバイスありがとうございました。
>うえださん 環境変数は JAVA_HOME C:\\Program Files\\Java\\jdk1.5.0_05 PATH C:\\oracle\\ora92\\bin;C:\\Program Files\\Java\\jdk1.5.0_05\\bin; CLASSPATH C:\\oracle\\ora92\\jdbc\\lib;C:\\oracle\\ora92\\jdbc\\lib\\ojdbc14.jar; を設定しております。 >かしんさん ご指摘にありました通り、ocijdbc9.dllは%ORACLE_HOME%\\binに存在していたので、 LD_LIBRARY_PATHに上記のパスを追加いたしました。また、JAVA_OPTSにも "-Djava.library.path=%ORACLE_HOME%\\bin"を設定いたしました。 結果は、以前と同様の結果でした。 >あんとれさん ご指摘にありましたとおり、PATHに%ORACLE_HOME%\\binと%ORACLE_HOME%\\libの両方を 追加し、またocijdbc9.dllをsystem32に放り込みましたが、同じ結果がでました。 そして今回、データベースにログを出力するためにlog4jを使用しているのですが、 その設定ファイルからDB接続情報の記述を削除し、別のエラーが出たので調査したところ、 DriverManager.getConnection()でとまってしまいます。 今回、開発するにあたって、Eclipseを用いたのですが、そちらでは正常に動作していたので、 全く検討がつかない状況となっております。 申し訳ありませんが、再度ご指摘お願いいたします。 よろしくお願いいたします。 | ||||
|
投稿日時: 2006-10-05 20:26
LD_LIBRARY_PATH環境変数は、特定のUnix(Solarisなど)で参照されるものですので、
Windowsでは設定する必要はありません(PATH環境変数がそれに対応します)。それから ドライバの動作にはocijdbc9.dll以外のファイルも必要になりますので、System32など に放り込むだけでは動作しないでしょう。 OCIクライアントの実行には、ORACLE_HOME環境変数が設定されている必要があると 思いますが、そちらは大丈夫でしょうか。書き込みの内容からすると大丈夫そうですが。
もしかして、サービスで動かした場合に障害が発生する、ということですか? 環境変数をユーザ環境変数で設定していたり、サービスの実行ユーザにOracleのインス トールディレクトリへのアクセス権がないとかいうことはありませんか? | ||||
|
投稿日時: 2006-10-06 09:36
(一般公開情報だから問題ないよな...?)
http://support.oracle.co.jp/ -> 製品 FAQ 検索 -> キーワードに 「NTFS」と「権限」とで検索するとヒットする情報に該当しそうな 気がする...。 _________________ もしもし@RMAN 友の会 | ||||
|
投稿日時: 2006-10-06 13:07
アドバイス、ありがとうございました。
>ukさん >もしもしさん アクセス権は調査の結果、問題ありませんでした。 Tomcatのプロパティのjava optionsにパスを追加し、oracleのbinの中身を 全てSystem32にコピーしたら、システムは動作するようになりました。 しかし、追加した環境変数などでどれが必要でどれが必要でないのかの整理・ 原因究明をするために、環境変数やSystem32にコピーしたファイルを全て 削除するという作業を行ってもシステムが動作する現状になってしまいました。 削除した環境変数は、 JAVA_OPTS LD_LIBRARY_PATH ORACLE_HOME CLASSPATH です。 存在している環境変数は JAVA_HOME=C:\\Program Files\\Java\\jdk1.5.0_05 Path=C:\\Program Files\\Java\\jdk1.5.0_05\\bin;C:\\Program Files\\Oracle\\jre\\1.3.1 \\bin;C:\\Program Files\\Oracle\\jre\\1.1.8 \\bin;C:\\WINNT\\system32;C:\\WINNT;C:\\WINNT\\System32\\Wbem です。 もし何か手がかりになる情報ございましたら アドバイスお願いいたします。 |
1