- PR -

DB接続エラーで困っています(eclipse,JSP)

1
投稿者投稿内容
黒鯛
会議室デビュー日: 2005/11/12
投稿数: 8
投稿日時: 2005-11-12 16:09
はじめまして、Java初心者と申します。
eclipse3.0でアプリを開発しています。
アプリAからボタン押下でJSPを呼び出して、新規ポップアップ画面を表示し、そこで処理ボタン押下により、DB(SQL Server 2000)へ接続し必要な情報を取得し情報表示しています。
1回目はDB接続に成功し処理は正常終了しますが、2回目以降に処理ボタンを押下するとDB接続エラーが発生します。厳密に言うと、2回目以降でも、しばらく時間を置くと(5分くらい?)処理は正常に行われます。原因がわからず、困っているのですが、アドバイス頂けたら幸いです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-12 16:19
引用:

Java初心者さんの書き込み (2005-11-12 16:09) より:

1回目はDB接続に成功し処理は正常終了しますが、2回目以降に処理ボタンを押下するとDB接続エラーが発生します。
厳密に言うと、2回目以降でも、しばらく時間を置くと(5分くらい?)処理は正常に行われます。


2 回目から?
Connection の Close とか資源の解放などは万全でしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-12 21:28
出ているエラーを貼り付けてみてはいかがでしょう。
黒鯛
会議室デビュー日: 2005/11/12
投稿数: 8
投稿日時: 2005-11-14 08:42
お返事が遅れまして、申し訳ございません。
エラーメッセージは以下の通りです。

HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: DB接続エラー
root cause
javax.servlet.ServletException: DB接続エラー
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-14 10:31
ServletException 自体の root cause ついては表示されていないでしょうか?
JSP や Servlet のトラブルシューティングに慣れていないようでしたらまずスタンドアロンの Java プログラムで再現させてみるのも良いかもしれません。
黒鯛
会議室デビュー日: 2005/11/12
投稿数: 8
投稿日時: 2005-11-15 17:56
お世話になります。
スタンドアロンでは発生しないと思います。と言いますのも、DB接続部分は共通メソッドにしており、同一サーバ上で実行するプログラムでは正常に動作しているからです。今回不具合が発生しているケースでは、呼び出し元と呼び出し先のサーバが異なり、これが今回の事象の原因に関連していると推測しております。
また、資源の解放の件ですが、基本的にはopen/closeを意識せずコーディングしております。DriverManager.getConnectionを利用しております。
ちなみに、明にclose処理を追加してみましたがダメでした。
しばらく、時間を置くと正常に動作するのが不思議です。
黒鯛
会議室デビュー日: 2005/11/12
投稿数: 8
投稿日時: 2005-11-30 09:20
DB接続のメソッドは以下のようにコーディングしており、DriverManager.getConnection()でエラーが発生しております。
1回目は正常動作するのに、2回目以降エラーが出るのが不思議です。
[SQLState]08001
[ErrorCode]0
DriverManager.getConnection()のパラメタは以下の通りです。
jdbc:microsoft:sqlserver://,localhost:1433;DatabaseName=[strDatabaseName],[strUserName],[strPassword]

private boolean getConnection() throws Exception {
try {
objDriver = (Driver)Class.forName(DRIVERCLASS).newInstance();
objConnect = DriverManager.getConnection( URL + strServerName + ":" + strPortNumber + ";DatabaseName=" + strDatabaseName, strUserName, strPassword );
objConnect.setReadOnly(true);
objSql = objConnect.createStatement();
(以下略)
1

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