dポイントプレゼントキャンペーン実施中!

はじめまして、下記の様な環境でServletを運用していますが、
一日たつと(翌日になると)TomcatとMySQLのコネクションが切れており、
WEBアプリケーションにログインできなくなってしまいます。Tomcatを再起動するとコネクションは回復し、
ログインできるようになります。
なぜコネクションが勝手に切れてしまうのかが、解りませんでしたので質問しました。
よろしくお願い致します。

・Windows Server2003
・Tomcat6.0
・MySQL
・JAVA Servlet


エラーログ
-----------------------------------------------------------------------
SQLException:No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:


** BEGIN NESTED EXCEPTION **

com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure

Last packet sent to the server was 0 ms ago.

STACKTRACE:

com.mysql.jdbc.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
-------------------------------------------------------------

A 回答 (3件)

# 設定ファイルのmy.iniにもタイムアウトまでの時間設定が


# 記載されていませんでした

はい、ありません。
…が最初の提示URLからキーワードは拾えるので後は調べてくれるかなと思っていました。

interactive_timeのデフォルトは未設定(記述なし)で28800[sec]ということです。
タイムアウトを設定するには明示的に記載すればOKです。


~ 設定ファイルを編集 ~

my.iniやmy.cnfにてシステム変数:interactive_timeout に値を代入します。
システム変数を確認するにはコンソール(コマンドプロンプト等)にて
> mysqladmin
と打つと現在値を確認できます。
また、参照している設定ファイルの確認も出来ます。

----- my.iniの任意の箇所に追加 -----
interactive_timeout = (タイムアウトまでの秒数)
------------------------------------
10時間にしたけりゃ 10(h)×60(m)×60(s)=36000(s) で

interactive_timeout = 36000

となります。


確認の為に調べてて見つけたんですが、
WindowsだとAdministratorToolでも出来るんですね。

~Administrator Toolを使う場合~

ログイン後、左ペインの[Startup Variables]
→[Advanced Networking]タブ
→[Timeout Settings]グループ
→[Interractive]にチェックを付ける
→[Interractive]の右側のボックスにタイムアウトまでの秒数を入力する

簡単になったもんです。


参考:システム変数のリスト
http://www.limy.org/program/db/mysql/mysql_varia …

確認環境
WinXP SP2
MySQL Server 5.0.22
MySQL Administrator 1.2.5 RC
    • good
    • 0
この回答へのお礼

ありがとうございました。
確認できました!!!
大変助かりました!!

お礼日時:2007/06/20 11:33

別のアプローチとしてMySQLの設定変更することでも対処できます。



http://dev.mysql.com/doc/refman/5.1/ja/mysql-opt …
http://dev.mysql.com/doc/refman/5.1/ja/option-fi …

初期値だと8時間で切れるようですので
単純にタイムアウトまでの時間を長くするか
再接続を有効にするのが良いかと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>タイムアウトまでの時間を長くする
の設定方法がわかりませんでした。
設定ファイルのmy.iniにもタイムアウトまでの時間設定が
記載されていませんでした。申し訳ございませんが
タイムアウトまでの時間を長くする方法を教えていただけませんでしょうか?
よろしくお願い致します。

お礼日時:2007/06/19 13:06

Connectionを持ったインスタンスAAA(フィールドとして持つ)をHttpSessionに登録し、AAAがnullの場合は登録しなおす。



DataSourceは共通のStaticクラスに保持しておきます。
(private static DataSource datasource = null;)

曖昧ですが、こんな処理ではどうでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2007/06/19 13:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!