- PR -

DBへのコネクションの確立

投稿者投稿内容
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-05-30 11:54
いつもお世話になっております。

strutsを勉強していてDBへアクセスする勉強をしています。
しかしエラー
「javax.naming.NameNotFoundException: 名前 jdbc はこのコンテキストにバインドされていません」
が,出てしまい,色々調査しているのですが解決方法がわかりません.
長くなりますが,ソースを載せますので,ミスがあったら指摘,修正をお願いします.

コード:

{
try
{
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/SOFTWARE_DB");
Connection con = ds.getConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM SOFTWARE_TBL WHERE ID=1");

softname = rs.getString("NAME"); // テーブルの"NAME"を"softname"に代入
vername = rs.getString("VERSION"); // テーブルの"VERSION"を"vername"に代入
makename = rs.getString("MAKER"); // テーブルの"MAKER"を"makename"に代入]
license = rs.getString("LICENSE_NO"); // テーブルの"LICENSE_NO"を"license"に代入
   limit = rs.getString("EXPIRATION_DATE");// テーブルの"EXPIRATION_DATE"を"limit"に代入
   delete = rs.getString("DELETE_FLAG");// テーブルの"EXPIRATION_DATE"を"limit"に代入

   rs.close(); // DBへのアクセスをクローズ
   stmt.close();
   con.close();
 }
  catch (Exception e)
  {
   e.printStackTrace();
  }
}


server.xml
コード:

<Context path="/struts-test"
reloadable="true"
docBase="C:\Program Files\Apache Group\Tomcat 4.1\webapps\licenseManageSystem"
workDir="C:\Program Files\Apache Group\Tomcat 4.1\webapps\licenseManageSystem\work\org\apache\jsp">

<Resource name="jdbc/SOFTWARE_DB"
auth="container"
type="javax.sql.DataSource" debug="1" />
<ResourceParams name="jdbc/SOFTWARE_DB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
//mysqlがあるDBのIPアドレスです
<value>jdbc:mysql://10.17.43.214/SOFTWARE_DB?user=○○&amp;password=○○</value>
</parameter>
</ResourceParams>
</Context>



抜粋して載せました.足りない部分等ありましたら指摘お願いします.
毎回質問ばかりで恐縮ですが.ぜひ宜しくお願いします.


[ メッセージ編集済み 編集者: オガシン 編集日時 2006-05-30 12:06 ]
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-05-30 12:38
アプリケーションサーバに何を使っているのかわかりませんが、server.xmlという
ことはTomcatでしょうか。であれば、web.xmlにリソース参照を設定すればよいと
思います。下記のURLあたりを参照してください。

http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/jndi-datasource-examples-howto.html
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-05-30 12:59
>>ukさん
すばやいお返事ありがとうございます.
Tomcat等のvarsionを乗せていたつもりでしたが,抜けてましたね.
失礼しました^^;

教えていただいたURLを参照して,修正,改良してみたいと思います.
結果はまた後ほど,お伝えします.

エラーを解消できましたがまた新たなエラーが出ました。。。
上記ソース内で変数dsにDataSourceをいれてgetConnectionするはずなんですが,
ds内はnullであり,そこでエラーが出てしまいました.
自分でも調査しますが,ご教授頂けたらありがたいです,宜しくお願いします.

[ メッセージ編集済み 編集者: オガシン 編集日時 2006-05-30 14:21 ]
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-05-30 14:25
引用:

Tomcat等のvarsionを乗せていたつもりでしたが,抜けてましたね.
失礼しました^^;


で、Tomcatのバージョンは?

引用:

エラーを解消できましたがまた新たなエラーが出ました。。。
上記ソース内で変数dsにDataSourceをいれてgetConnectionするはずなんですが,
ds内はnullであり,そこでエラーが出てしまいました.
自分でも調査しますが,ご教授頂けたらありがたいです,宜しくお願いします.


バージョンによって設定の方法が異なりますので、まずバージョンから書いてください。
それから「ds内はnull」の意味がわからないのですが、具体的なエラーはなんですか?
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-05-30 14:46
失礼しました.言葉足らずですみません.
使用しているのは,Tomcat4.1です.

エラーは,
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null', cause:
java.sql.SQLException: No suitable driver
が出てきました.

宜しくお願いします.
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-05-30 15:11
JDBCドライバはどこに配置していますか?
それから、usernameとpasswordはResourceParams/parameterで指定するものだと思い
ますが、urlに直接指定しても大丈夫でしたっけ?
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-05-30 15:33
指摘されたように,usernameとpassを移しましたが,同じエラーが出ました。

JDBCドライバは「mysql-connector-java-3.1.12-bin.jar」ファイルの事ですか?
これは,Tomcat 4.1\common\lib(Tomcat,commonフォルダのlib)に追加してあります.

以上です.宜しくお願いします.
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-05-30 15:46
引用:

オガシンさんの書き込み (2006-05-30 15:33) より:
指摘されたように,usernameとpassを移しましたが,同じエラーが出ました。


パラメータ名はそれぞれusernameとpasswordですが、大丈夫ですか?

引用:

JDBCドライバは「mysql-connector-java-3.1.12-bin.jar」ファイルの事ですか?
これは,Tomcat 4.1commonlib(Tomcat,commonフォルダのlib)に追加してあります.


ネットで検索すると、ドライバが正常にダウンロードできなくてサイズ0になっている、
という現象がいくつか報告されていますが、大丈夫ですか?

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