JDeveloperでのデータベースからの切断は簡単な操作ですが、Javaアプリケーションでは単独のプロセスではありません。アプリケーションでは、ResultSet
、Statement
およびConnection
オブジェクトを使用した後、それらをすべて明示的にクローズする必要があります。Connection
オブジェクトをクローズすると、データベースから切断されます。close
メソッドによって、メモリーがクリーンアップされ、データベース・カーソルが解放されます。そのため、ResultSet
およびStatement
オブジェクトを明示的にクローズしないと、重大なメモリー・リークが発生する場合があり、データベース内のカーソルを使い果たすことがあります。その後、接続をクローズする必要があります。
この章は次の項で構成されています。
次の手順では、closeAll
メソッドをDataHandler
クラスに追加します。
アプリケーション・ナビゲータでDataHandler.java
をダブルクリックして、Javaソース・エディタで開きます。
DataHandler
クラスの最後で、次のようにcloseAll
メソッドを宣言します。
public void closeAll() { }
ソッド本体で、次のようにResultSet
オブジェクトがオープンしているかどうかを確認します。
if ( rset != null ) {
オープンしている場合は、次のようにクローズして例外を処理します。
try { rset.close(); } catch ( Exception ex ) {} rset = null; }
if ( stmt != null ) { try { stmt.close(); } catch ( Exception ex ) {} stmt = null; }
if ( conn != null ) { try { conn.close(); } catch ( Exception ex ) {} conn = null; }
ResultSet
、Statement
およびConnection
オブジェクトは、使い終わった後クローズする必要があります。DataHandler
クラスでは、挿入、更新および削除メソッドでは、戻る前にこれらのオブジェクトをクローズする必要があります。問合せメソッドでは、employees.jsp
ページが問合せによって返された行の処理を終了するまで、これらのオブジェクトをクローズできないことに注意してください。
次の手順では、DataHandler.java
ファイルでcloseAll
メソッドへの適切なコールを追加します。
Javaソース・エディタでDataHandler.java
を開きます。
addEmployee
メソッドの最後で、catch
ブロックの閉じカッコの後、finally
ブロックでcloseAll
メソッドへのコールを追加します。
finally { closeAll(); }
同じコールをaddEmployeeSP
、deleteEmployeeById
、findEmployeeById
、updateEmployee
およびauthenticateUser
メソッドに追加します。
ビジュアル・エディタでemployees.jsp
ファイルを開きます。Employees
表内のスクリプトレットを検索し、ダブルクリックして「スクリプトレットの挿入」ダイアログ・ボックスを開きます。
次の文をwhile
ループの後に追加します。
empsbean.closeAll();
作業内容を保存し、アプリケーションをコンパイルおよび実行して、すべて正しく動作することを確認します。