- - PR -
Tomcat5.0.28とOracle9.2とのDBCPを経由しての接続について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-31 14:21
はじめまして。
当方、社内情報システムの人間で運用重視の環境でして、至らない事は重々承知して おりますが、その辺のご理解をお願いいたします。 導入検討の事前調査で環境を整備しているのですが、どうしても上手くいかないので、 皆さんのお知恵を拝借させてください。 ***************************************************************************** 【状況】 Tomcat5とOracle9iの接続にJDBC接続プーリングを使用して接続をしたい。 JDBCドライバとしてはTomcatサーバー側にOracle9クライアントをインストール しないことを前提にthinドライバでの接続を考えています。 【現象】 Tomcat5.0.28とOracle9.2とのDBCPを経由しての接続をしようとして、 以下のエラーが表示されました。 【内容】 org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 環境と設定内容は以下の通りです。 【導入ソフト】 javaSDK 1.4.2.07 Tomcat 5.0.28 Eclipse 3.0.1 (Oracle 9i(9.2)) ojdbc14.jar 【設定内容】 ---server.xml--------------------------------------------------------------- <GlobalNamingResources> <Resource name="jdbc/[xxx Oracle Connect String xxx]" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/[xxx Oracle Connect String xxx]"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:[xxx Oracle Connect String xxx]@[Oracle IP Address]:1521:[Oracle sid]</value> </parameter> <parameter> <name>username</name> <value>[Oracle UserName]</value> </parameter> <parameter> <name>password</name> <value>[Oracle Password]</value> </parameter> <parameter> <name>maxActive</name> <value>20</value> </parameter> <parameter> <name>maxIdle</name> <value>2</value> </parameter> <parameter> <name>maxWait</name> <value>-1</value> </parameter> </ResourceParams> </GlobalNamingResources> ---web.xml------------------------------------------------------------------ <?xml version="1.0"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>test2</servlet-name> <servlet-class>test2.jdbctest1</servlet-class> </servlet> <servlet-mapping> <servlet-name>test2</servlet-name> <url-pattern>/test2</url-pattern> </servlet-mapping> <resource-ref> <description>Oracle Datasource example</description> <res-ref-name>jdbc/[xxx Oracle Connect String xxx]</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app> ---JDBCの配置---------------------------------------------------------------- 『[%CATALINA_HOME%]\\common\\lib』に『ojdbc14.jar』を配置 ***************************************************************************** この後、別スレッドの『Tomcat-StrutsによるOracleDB接続エラーについて』を 参考にして、以下の変更を行ったところ、エラー内容が変わりました。 【修正内容】 ---testsites1.xml------------------------------------------------------------ <Context path="/testsites1" reloadable="false" docBase="C:\\Program Files\\eclipse\\workspace\\testsites1" workDir="C:\\Program Files\\eclipse\\workspace\\testsites1\\work" > <Logger className="org.apache.catalina.logger.FileLogger" prefix="testsites1." suffix=".txt" timestamp="true"/> <ResourceLink name="jdbc/[xxx Oracle Connect String xxx]" global="[xxx Oracle Connect String xxx]" type="javax.sql.DataSource"/> </Context> Eclipseにて作成される各サイトの『コンテキスト.xml』(←表現が間違っていたら ごめんなさい)に『<ResourceLink ・・・』を追加しました。 【変更されたエラー内容】 HTTPステータス 500 - <type> 例外レポート <メッセージ> <説明> The server encountered an internal error () that prevented it from fulfilling this request. <例外> java.lang.NullPointerException org.apache.commons.dbcp.DelegatingConnection.close(DelegatingConnection.java:151) org.apache.commons.dbcp.PoolableConnection.reallyClose(PoolableConnection.java:95) org.apache.commons.dbcp.PoolableConnectionFactory.destroyObject(PoolableConnectionFactory.java:301) org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:883) org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851) org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540) test2.jdbctest1.doGet(jdbctest1.java:38) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) ***************************************************************************** 当方の知識不足は重々認識しておりますが、何卒、ご教授していただきたいと共に 具体的な指摘をお願いいたします。 [ メッセージ編集済み 編集者: 孤立状態 編集日時 2005-03-31 14:26 ] [ メッセージ編集済み 編集者: 孤立状態 編集日時 2005-03-31 14:28 ] |
|
投稿日時: 2005-03-31 15:07
設定は最初ので良いような気もしますが、とりあえず
jdbc:oracle:thin:[xxx Oracle Connect String xxx]@ の[xxx Oracle Connect String xxx]はいらないんじゃないでしょうか? |
|
投稿日時: 2005-03-31 15:54
早速のご返答、有難うございます。
ようやく『getConnection()』のロジックが通りました。 的確かつ迅速な回答有難うございます。 引き続きSQL実行結果の検証をいたします。 ただ、 jdbc:oracle:thin:[xxx Oracle Connect String xxx]@[Oracle IP Address]:1521:[Oracle sid] の記述は日本語版の某有名サイトのOracle8iの接続方法を真似たのですが、 8iだと、これでもいいのでしょうか? 一抹の疑問を感じます。 私のような『なんちゃって技術者』には、ちょっとした事でも知識不足のため 行き詰まります。 今回の件も調べた情報全てを次々組み合わせて、環境を変えたのですが、 この部分は疑ってませんでした。 重ね重ね『(株)ぽち』様、有難うございました。 なお、私の環境の設定内容が知りたい人がございましたら、 稚拙ではありますが、お教えいたします。 |
|
投稿日時: 2005-03-31 15:56
いや、私もそんなに詳しくないですが、とりあえず昔から
jdbc:oracle:thin:@[Oracle IP Address]:1521:[Oracle sid] というurlでつないでいます。。 |
1