| Oracle Database 2日でJava開発者ガイド 11g リリース1(11.1) E05692-02 |
|
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; }
Statementオブジェクトに同じ操作を繰り返します。
if ( stmt != null ) { try { stmt.close(); } catch ( Exception ex ) {} stmt = null; }
Connectionオブジェクトをクローズします。
if ( conn != null ) { try { conn.close(); } catch ( Exception ex ) {} conn = null; }
ResultSet、StatementおよびConnectionオブジェクトは、使い終わった後クローズする必要があります。DataHandlerクラスでは、挿入、更新および削除メソッドでは、戻る前にこれらのオブジェクトをクローズする必要があります。問合せメソッドでは、employees.jspページが問合せによって返された行の処理を終了するまで、これらのオブジェクトをクローズできないことに注意してください。
次の手順では、DataHandler.javaファイルでcloseAllメソッドへの適切なコールを追加します。
DataHandler.javaを開きます。
addEmployeeメソッドの最後で、catchブロックの閉じカッコの後に、finallyブロックでのcloseAllメソッドへのコールを追加します。
finally { closeAll(); }
addEmployeeSP、deleteEmployeeById、findEmployeeById、updateEmployeeおよびauthenticateUserメソッドに追加します。
employees.jspファイルを開きます。Employees表内のスクリプトレットを検索し、ダブルクリックして「スクリプトレットの挿入」ダイアログ・ボックスを開きます。
whileループの後に追加します。
empsbean.closeAll();
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|