1

私は、最近まで UI のないデータベースで動作するテスト アプリケーションを構築してきました。私は今1つ追加しています。問題は、JFrame が別のスレッドで起動され、そのスレッドが閉じたときにデータベース接続を閉じる必要があることです (UI が閉じたとき)。どうすればいいですか?

また、アプリケーションがクラッシュしたり、強制的に閉じられた場合、アプリケーションのデータベース接続 (この場合は組み込みデータベース) はどうなりますか? クローズされていない接続がリソース リークを引き起こすと聞きました。これが発生した場合、クリーンアップするために私にできることはありますか?

4

2 に答える 2

4

ランタイムシステムにシャットダウンフックを追加できます。これは、仮想マシンを閉じるときに起動されるスレッドです。スレッドでは、すべてのデータベース接続とその他の重要なリソースを閉じることができます。

于 2009-03-30T09:37:43.923 に答える
3
  1. ユーザーが JFrame を閉じようとすると、WindowClosingEventが発生します。したがって、この方法では接続を閉じることができます。
  2. DBMS は接続のプールを使用します。接続を適切に閉じないと、この接続プールは未使用の接続でいっぱいになります。
    プールがいっぱいで、新しい接続が必要な場合は問題です。アプリケーションは動作しません。ユーザーが待機してもう一度試行するか (待機中に 1 つの接続が閉じられるか強制終了される可能性があります)、データベースが手動で再起動されてすべての接続が失われます。
    DBMS は、事前定義された時間が経過すると、未使用の接続をすべて閉じます。今回指定するパラメータは、DBMS のマニュアルに記載されています。

あなたのコメントに加えて: 接続をクリーンアップするのに十分な時間を確保することはできません。おそらく、あなたのアプリケーションはあなたのシステムなどによって殺されます。そのため:できるだけ早く接続をクリーンアップしてください
未使用の接続は、接続オブジェクトを失った後にのみ DBMS によって削除できます。

于 2009-03-30T09:28:26.020 に答える