• 締切済み

JNDIでDataDourceにNullが入ってしまう

いつもお世話になっています。 JNDIを使ってDataSourceを取得しようと思っているのですがNullが返ってきてしまってかなりハマッてます。 ご指導頂けたらと思います。 設定は下記のようになっています。 環境: jdk:1.4.2_12 tomcat:5.0 Mysql:4.0.20a-nt server.xml-------------------------------------------------- <Context docBase="C:\Documents and Settings\ESC\workspace\SNS\.deployables\SNS" path="/SNS" reloadable="true"> <Resource name="jdbc/MySQL" auth="Container" type="javax.sql.Datasource" /> <ResourceParams name="jdbc/MySQL"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <!-- Max Active <parameter> <name>maxActive</name> <value>100</value> </parameter> --> <!-- Max Idle <parameter> <name>maxIdle</name> <value>30</value> </parameter> --> <!-- Max Wait <parameter> <name>maxWait</name> <value>10000</value> </parameter> --> <parameter> <name>username</name> <value>****</value> </parameter> <parameter> <name>password</name> <value>****</value> </parameter> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost/dbname?useUnicode=true&amp;characterEncording=Windows-31J</value> </parameter> </ResourceParams> </Context> web.xml-------------------------------------------------- <resource-ref> <res-ref-name>jdbc/MySQL</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> java側-------------------------------------------------- InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQL"); connection = ds.getConnection(); -------------------------------------------------------- どうか宜しくお願い致します。

みんなの回答

回答No.1

DBへの接続に関しては、まず初めに簡単なJ2SEプログラムからの呼び出しで成功しているのかどうかですね。これが出来ていれば、RDBMSの設定等はひとまずOKということになります。 その次に、簡単なサーブレットプログラムからのアクセスでも接続が成功していれば、jarファイルなどの設定等も問題無しということになります。 上記を踏まえた上で。 環境等やserver.xmlの設定なども、ざーっと拝見した所ではまず問題無しです。後は、以下の点を再度確認してみてください。 (1)web.xml内の<resource-ref>タグが一番最後に記入されているのかどうか? そもそも、<resource-ref>タグはなくてもDatasourceの利用は可能ですが、もし記述するのであれば<web-app>要素内の一番下に追加となります。 (2)Datasourceのインスタンス変数が、一番外のフィールドとして宣言されているのかどうか? 質問文からは、サーブレット内でどのように記述されているのか分からないので、以下のサイトなどを元にもう一度、initメソッド内やdoGetメソッド内での記述を確認してみてください。インスタンス変数dsは、initメソッドとdoGetメソッドの両方で利用されるので、一番外側で初期化しておかないといけないはずです。

参考URL:
http://www.hellohiro.com/datasource.htm

関連するQ&A