- - PR -
JNDIについて(長文です)
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-02 18:22
すみません。意味がわからなかったので以下のようにしてみました。 間違っていればご指摘ください。 try { 上記ソース } catch { ... } これを試してみたところ、以下の例外をキャッチしました。 宜しくお願い致します。 ****例外**** org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' | ||||||||
|
投稿日時: 2004-11-02 19:35
catchの中は何をやっているんでしょうか。「わからない」ときはなるべく省略しないほうが いいですよ。 catch (Exception e) { e.printStackTrace(); } で、Tomcatコンソールにスタックトレースが出力されます。 | ||||||||
|
投稿日時: 2004-11-02 20:10
すみません。以後、気をつけます。 ちなみに、 out.println(E.toString()); としていました。
で実行しました。 コンソールに出力されたメッセージを以下に表記します。 宜しくお願い致します。 ****コンソール内容**** 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 | ||||||||
|
投稿日時: 2004-11-02 20:37
OracleのJDBCドライバが見つからないようですね。どこに配置していますか?
| ||||||||
|
投稿日時: 2004-11-04 08:57
レスが遅くなってしまいました。
%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(); | ||||||||
|
投稿日時: 2004-11-04 09:35
私もまったく同じ現象で困ってましたが、以下の情報で解決できました。
http://kamakura.cool.ne.jp/oppama/swjd/jndiglobaldatasource.html また、
私の環境ではこの作業は行ってません。 (%CATALINA_HOME%\common\lib へのコピーのみです) | ||||||||
|
投稿日時: 2004-11-04 16:08
上記を参考に、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アプリで取得できるものだと 思っていたのですが・・・。 ちなみに、
にしてみましたが、正常に動作しているようです。 %JRE_HOME%\jre\lib\extの直下にはいらなかったみたいですね。 | ||||||||
|
投稿日時: 2004-11-04 19:17
ここを見ると出来そうな気がするのですが。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 ] |