2011-08-22 446 views
6

Tomcat6.0でGWT、Hibernate(XMLベースのマッピング)、MySQL-を使用してアプリケーションを開発しています。 IDE-Netbeans 6.9 Netbeansのプロジェクトプロパティの「保存時に展開」オプションを設定しました。不正アクセス:このWebアプリケーションインスタンスは既に停止されています

私のアプリケーションは、すべての今して、サーバーでの長時間実行されている場合は、私のアプリケーションがデータベースへの接続に失敗し、次の例外に

をスローし、最終的な次のスタックトレースも同様にデバッグ目的のためにスローされたエラーによって引き起こされます不正なアクセスの原因となったスレッド
を終了しようとしましたが、機能上の影響はありません。

java.lang.IllegalStateException 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1273) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316) 
     at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4273) 
     at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1444) 
     at org.hibernate.connection.DriverManagerConnectionProvider.close(DriverManagerConnectionProvider.java:152) 
     at org.hibernate.connection.DriverManagerConnectionProvider.finalize(DriverManagerConnectionProvider.java:142) 
     at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method) 
     at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83) 
     at java.lang.ref.Finalizer.access$100(Finalizer.java:14) 
     at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160) 

私はTomcatサーバーを再起動すると、私は再び私がシームレスなパフォーマンスを得ることができ、作業はTomcatを再起動せずに成し遂げることができ、それを通して方法を教えてDatabase.Pleaseを接続することができています。

答えて

5

おそらくは接続が増えていて、決してそれらを閉じることはなく、データベースの最大接続数に達します。

接続を開いている場所を見つけ、閉じていることを確認します。リクエストごとに接続を開いても閉じないと、簡単に見つけて修正できます。または、エラーが発生したときに接続を終了していない可能性があります。例外処理コードを確認してください。それが事実だった場合、私はエラー500とないものを期待し、

Connection con; 
try { 
    con = ...; // open connection 
    // do work 
catch (SQLException e) { 
    // do whatever 
} finally { 
    if (con != null && !con.isClosed()) { 
     try { 
      con.close(); 
     catch (SQLException e) { 
      // Don't throw from here or you'll lose any return/exception from above 
      log.error("Failed to close connection", e); 
     } 
    } 
} 
+0

私見:

推奨アプローチDB接続を使用して閉じDB接続時に最善の努力をするためにtry finallyを使用することですそれは報告されています。実際、DB接続を必要としないサーブレットはまだ動作しているはずです。 – SJuan76

+0

InfactサーブレットはDBを必要としません... –

+0

ボヘミアンの解決策を探してください(まだ私はまだそれはかなりミスリーディングメッセージだと思っています...) – SJuan76

関連する問題