2016-10-05 4 views
0

DBCPとJDBCを使用してデータを移動しています。場合によっては、クエリの実行時間が長すぎると、アプリケーションが強制終了されることがあります。ご存じのように、アプリケーションは強制終了されますが、すでにデータベースに送信されたステートメントは強制終了されません。実行中のクエリのリストを見つけてアプリケーションを強制終了する前にそれらをキャンセルする方法はありますか?JDBCを使用して実行中のステートメントのリストを取得する方法

DB側から実行中のクエリのリストを取得してクエリを強制終了できることがわかりましたが、これは実行したくない方法です。 JDBCを介してアプリケーション(指定されたユーザーアカウント)に発行された実行中のクエリ(ステートメント)の一覧を見つけて、statement.cancel()を使用してクエリを中止します。

答えて

1

JDBC APIは、実行中またはその他の方法ですべてのStatementオブジェクトのリストを取得する方法を提供しません。ただし、Statementオブジェクトをすべて自分で追跡できます。たとえば、WeakHashMap<Statement, Statement>を使用して、現存のStatementオブジェクトをメモリ/リソースのリークを回避する方法で保持することができます。

Connection.abort(...)

関連する問題