- PR -

JNDIについて(長文です)

投稿者投稿内容
ニューフェイス
会議室デビュー日: 2004/11/01
投稿数: 13
投稿日時: 2004-11-02 18:22
引用:

スタックトレースを吐かせてみてもらえないでしょうか。



すみません。意味がわからなかったので以下のようにしてみました。
間違っていればご指摘ください。

try {
上記ソース
}
catch {
...
}

これを試してみたところ、以下の例外をキャッチしました。
宜しくお願い致します。

****例外****
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-11-02 19:35
引用:

ニューフェイスさんの書き込み (2004-11-02 18:22) より:
すみません。意味がわからなかったので以下のようにしてみました。
間違っていればご指摘ください。

try {
上記ソース
}
catch {
...
}

これを試してみたところ、以下の例外をキャッチしました。
宜しくお願い致します。

****例外****
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'


catchの中は何をやっているんでしょうか。「わからない」ときはなるべく省略しないほうが
いいですよ。

catch (Exception e) {
e.printStackTrace();
}
で、Tomcatコンソールにスタックトレースが出力されます。
ニューフェイス
会議室デビュー日: 2004/11/01
投稿数: 13
投稿日時: 2004-11-02 20:10
引用:

catchの中は何をやっているんでしょうか。「わからない」ときはなるべく省略しないほうが
いいですよ。


すみません。以後、気をつけます。
ちなみに、
out.println(E.toString());
としていました。
引用:

catch (Exception e) {
e.printStackTrace();
}


で実行しました。
コンソールに出力されたメッセージを以下に表記します。
宜しくお願い致します。

****コンソール内容****
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.apache.jsp.pooling_jsp._jspService(pooling_jsp.java:59)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:243)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
... 32 more
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-11-02 20:37
OracleのJDBCドライバが見つからないようですね。どこに配置していますか?
ニューフェイス
会議室デビュー日: 2004/11/01
投稿数: 13
投稿日時: 2004-11-04 08:57
レスが遅くなってしまいました。
引用:

OracleのJDBCドライバが見つからないようですね。どこに配置していますか?


%CATALINA_HOME%\common\libの直下に classes12.jar を、
%JRE_HOME%\jre\lib\extの直下に classes12.zip を配置しています。

ちなみに、以下のソースでは実行できるのですが
****ソース内容****
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection vConnect = DriverManager.getConnection("jdbc:oracle:thin:scott/tiger@localhost:1521:ORCL");
Statement vStmt = vConnect.createStatement();
ResultSet vResult = vStmt.executeQuery("select sysdate from dual");
out.println(vResult.getDate(0));
vResult.close();
vStmt.close();
vConnect.close();
nak2k
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 86
投稿日時: 2004-11-04 09:35
私もまったく同じ現象で困ってましたが、以下の情報で解決できました。
http://kamakura.cool.ne.jp/oppama/swjd/jndiglobaldatasource.html

また、
引用:

%JRE_HOME%\jre\lib\extの直下に classes12.zip を配置しています。


私の環境ではこの作業は行ってません。
(%CATALINA_HOME%\common\lib へのコピーのみです)
ニューフェイス
会議室デビュー日: 2004/11/01
投稿数: 13
投稿日時: 2004-11-04 16:08
引用:

私もまったく同じ現象で困ってましたが、以下の情報で解決できました。
http://kamakura.cool.ne.jp/oppama/swjd/jndiglobaldatasource.html


上記を参考に、server.xml に『contextタグ』(下記)を追加してみると、解決できました。
Listener のログでも確認しました。レスをくださった皆様、本当にありがとうございました。

<Context path="/samplePooling" reloadable="true">
<ResourceLink name="jdbc/myoracle" global="jdbc/myoracle" type="javax.sql.DataSource"/>
</Context>
(意味はわかりませんが、後々調べようと思っています)


で、新しい別のWebアプリを作成し、同じグローバル名を取得しようとすると・・・
なぜか同様のエラーが発生しました。
しかし、元々のWebアプリは正常に動作しました。
そこで、新Webアプリの『contextタグ(pathパラメータ以外)』(下記)を同様に追加してみると、
正常に動作しました。

<Context path="/testPooling" reloadable="true">
<ResourceLink name="jdbc/myoracle" global="jdbc/myoracle" type="javax.sql.DataSource"/>
</Context>

これは、同じグローバル名を取得する為には、Webアプリ単位で『contextタグ』を
追加しなければならないと言うことだと認識しましたが、あっていますでしょうか?
また、『contextタグ』を追加せずに任意のWebアプリから同じグローバル名を
取得するのは不可能なのでしょうか?
私自身は、『グローバル名』とは、1つ指定したら全てのWebアプリで取得できるものだと
思っていたのですが・・・。

ちなみに、
引用:

classes12.zip は%CATALINA_HOME%\common\lib へのコピーのみです


にしてみましたが、正常に動作しているようです。
%JRE_HOME%\jre\lib\extの直下にはいらなかったみたいですね。
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2004-11-04 19:17
引用:
ニューフェイスさんの書き込み (2004-11-04 16:08) より:
これは、同じグローバル名を取得する為には、Webアプリ単位で『contextタグ』を
追加しなければならないと言うことだと認識しましたが、あっていますでしょうか?
また、『contextタグ』を追加せずに任意のWebアプリから同じグローバル名を
取得するのは不可能なのでしょうか?



ここを見ると出来そうな気がするのですが。http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/config/globalresources.html

あるいは、server.xml で DefaultContext 要素を定義して、
その中に Resource 要素を定義する。
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/config/defaultcontext.html


[ メッセージ編集済み 編集者: はしもと 編集日時 2004-11-04 19:26 ]

スキルアップ/キャリアアップ(JOB@IT)