1

次のユースケースがあります。

クライアント アプリは、クライアント アプリへの db 呼び出しを実行した後に Java 結果セットを返す API (this is me) 呼び出しを行います。結果セットとそれに関連付けられた接続を閉じることができるように、クライアントが結果セットの使用をいつ終了するかを知りたいです。したがって、私が考えた設計は、結果セットとそれに関連付けられた接続を閉じる動作を持つ新しいオブジェクトにラップされた結果セットを送信することでした。このクリーンアップ メソッドは、クライアントによって呼び出される必要があります。なんらかの理由で、このクリーンアップ メソッドがクライアント アプリケーションによって呼び出されなかった場合、最終的に接続が開かれ、DB リソースが解放されなくなります。これをより適切に監視し、すべてのDBリソースがすぐに解放されるようにする方法はありますか? さらに、このユース ケースに役立つデザイン パターンがあれば教えてください。

ありがとう。

4

2 に答える 2

2

ResultSetすべての制御を失う API の外部のような高価な DB リソースを返さないでください。代わりに、または再利用可能なものにマップして、それList<Map<String, Object>>を返します。

于 2012-08-01T16:39:40.077 に答える
1

1つの方法は、ファントム参照を使用してオブジェクトから結果セット/接続をクリーンアップすることです(ファイナライズを使用するよりも望ましいと思います)-この方法では、オブジェクトをクリーンアップしてプールに戻すことができます。ユースケースによっては、タイムアウトも確認できます。

また、可能であれば結果セットを渡さないという他の提案にも同意しました。
それが役に立てば幸い。

于 2012-08-01T16:35:52.793 に答える