Novell(クラウドコンピューティングのセキュリティ・仮想化ソリューションを実現)

DBアクセスを繰り返すとエラーとなる

This document (00006163) is provided subject to the disclaimer at the end of this document.

問題点

テーブルをUPDATEする処理を繰り返すと、「ページがみつかりません。」とエラーがブラウザに出力されます。
UPDATEはSilverStreamのデータキャッシュを使用せず、以下のようにJDBCの機能を直接使用しています。
原因は何でしょうか?

import java.io.*;
import java.sql.*;

AgiDatabase db = null;
Connection connection = null;

try
{
  db = ((AgoHttpRequestEvent)getCurrentRequest()).getDatabase();
  connection = db.getConnection( true );
  connection.setAutoCommit( false );

  PreparedStatement ps = connection.prepareStatement
  ( "UPDATE ATABLE SET B = 1" );
  ps.executeUpdate();
  connection.commit();
}
catch( Exception e )
{
  e.printStackTrace();
}
finally
{
  if( db != null && connection != null ) {
    db.releaseConnection( connection );
  }
}

解決方法

PreparedStatementをクローズしていないため、SQL文がデータベース上に滞留し処理が進まなくなることによってエラーとなります。
PreparedStatementはSQL実行後、必ずクローズしてください。

例えば上記の場合、ps.executeUpdate() の後に ps.close() を実行するようにしてください。

  PreparedStatement ps = connection.prepareStatement
  ( "UPDATE ATABLE SET B = 1" );
  ps.executeUpdate();
  ps.close();
  connection.commit();

Disclaimer

この情報は、米国Novell, Inc.およびノベル株式会社の内外から発生したものです。本文書の内容または本文書を使用した結果について、いかなる保証、表明または約束も行っていません。また、本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。

本文書に記載されている会社名、製品名はそれぞれ各社の商品、商標または登録商標です。

  • ドキュメントID: J00006163
  • 作成年月日: 17-NOV-2004
  • 修正年月日:
  • ドキュメントリビジョン: 1
  • 分類: exteNd
  • 対象NOVELL製品およびバージョン: exteNd Application Server 3.x
  • カテゴリ: