Hitachi

Cosminexus V11 アプリケーションサーバ リファレンス API編


3.1 例外クラス

WebコンテナのAPIのうち,アプリケーションサーバが提供している例外クラスについて説明します。

Webコンテナの例外クラスを次の表に示します。

表3‒1 Webコンテナの例外クラス

例外名

内容

com.hitachi.software.web.dbsfo.DatabaseAccessException

データベースセッションフェイルオーバ機能でデータベースへのアクセスに失敗したことを通知する例外です。

この例外が出力された場合,データベースが正常に稼働しているか,データベースとJ2EEサーバの通信路に問題が発生していないか,およびデータベースセッションフェイルオーバ機能が無効となっていないか確認し,次の対策をしてください。

データベースに障害が発生している場合

データベースの回復手順に従い原因を対策してください。

データベースとJ2EEサーバの通信路に問題が発生している場合

通信路の問題を解決してください。通信路に問題が発生した場合,データベース上の排他が未解放となっていることがあります。業務を再開する前に無効な接続を確認して未解放となっている排他を解放してください。

データベースセッションフェイルオーバ機能が無効の場合

拡張子またはURIによるデータベースセッションフェイルオーバ機能の抑止によってデータベースセッションフェイルオーバ機能が無効となったリクエスト処理内では,HttpSessionオブジェクトの操作はしないでください。

また,J2EEサーバのwebserver.dbsfo.exception_type_backcompatプロパティにtrueを指定している場合,データベースセッションフェイルオーバ機能の抑止の対象となるURLでHTTPセッションの操作をすると,この例外がスローされます。データベースや通信路に問題がない場合にこの例外が発生したときは,データベースセッションフェイルオーバ機能の抑止の対象となるURLでHTTPセッションの操作をしていないかを確認してください。

DatabaseAccessExceptionクラスはjava.lang.IllegalStateExceptionクラスを継承しています。

HttpSessionLimitExceededExceptionクラス

HttpSessionオブジェクトが上限値を超えたことを通知する例外です。

この例外は,HttpSessionオブジェクト数の上限が設定できる,J2EEサーバモードの場合に適用されます。

J2EEアプリケーションを構成するプログラム(サーブレットなど)でcom.hitachi.software.web.session.HttpSessionLimitExceededExceptionクラスを使用する場合は,<Application Serverのインストールディレクトリ>\CC\lib\ejbserver.jarをクラスパスに追加して,Javaプログラムをコンパイルしてください。

HttpSessionLimitExceededExceptionクラスはjava.lang.IllegalStateExceptionクラスを継承しています。

com.hitachi.software.web.dbsfo.SessionOperationException

HttpSessionの操作ができない状態であることを通知する例外です。

この例外がスローされる場合を次に示します。

  • データベースセッションフェイルオーバ抑止機能を使用した場合,データベースセッションフェイルオーバ機能が無効となったリクエスト処理内ではHttpSessionオブジェクトの操作はできません。HttpSessionオブジェクトを取得するためにjavax.servlet.http.HttpServletRequest#getSession()またはgetSession(boolean create)を呼び出した場合,この例外がスローされます。

  • 参照専用リクエストでは,HTTPセッションの無効化はできません。参照専用リクエストでjavax.servlet.http.HttpSession#invalidate()を呼び出した場合,この例外がスローされます。

  • Webアプリケーション単位の同時実行スレッド数制御の実行待ちキューを使用して503エラーを返す設定をしている場合は,DD(web.xml)で指定するエラーページではHTTPセッションの作成および無効化はできません。DD(web.xml)で指定したエラーページでHTTPセッションを作成したり,javax.servlet.http.HttpSession#invalidate()を呼び出したりすると,この例外がスローされます。

この例外がスローされた場合は,次の点を確認してください。

  • データベースセッションフェイルオーバ抑止機能を使用している場合は,抑止する拡張子,またはURIの設定に問題がないかを確認してください。設定に問題がない場合は,Webアプリケーションを確認して,データベースセッションフェイルオーバ抑止機能の対象となるURLでHTTPセッションの操作をしていないかどうか確認してください。

  • 参照専用リクエスト定義機能を使用している場合は,参照専用リクエストの拡張子,またはURIの設定に問題がないかを確認してください。設定に問題がない場合は,Webアプリケーションを確認して,参照専用リクエストでHTTPセッションを無効化していないか確認してください。

  • 実行待ちキューを使用して503エラーを返す設定をしている場合は,DD(web.xml)で指定したエラーページでHTTPセッションの作成または無効化していないか確認してください。

SessionOperationExceptionクラスはjava.lang.IllegalStateExceptionクラスを継承しています。