Spring/JPA を使用してスタンドアロン アプリケーションに取り組んでおり、使用されているデータベース リソースを適切に解放しようとしています。
たとえば、Tomcat を使用する Web アプリケーションでは、サーバーをシャットダウンし、Tomcat にリソースを管理させます。
しかし、私はスタンドアロン アプリにいるので、これに注意する必要があります。Runtime.getRuntime().addShutdownHookを使用してシャットダウン イベントを「キャッチ」し、((ClassPathXmlApplicationContext) context).close();を呼び出します。、 このようなもの:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
((ClassPathXmlApplicationContext) context).close();
}
スレッドが接続を使用していた場合、スタックトレースで例外が発生します。別のオプションがあるかどうか疑問に思っていますか?開いているトランザクションのリストを取得して、それらを強制的にロールバックすることはありますか?