アプリケーションの運用中に異常が発生した場合の対処方法について、以下の内容を説明します。
クライアントアプリケーションの異常
クライアントアプリケーションが異常終了した場合やループ状態になった場合は、原因を取り除いたあと、クライアントアプリケーションを再起動してください。
なお、グローバルトランザクション連携時に、クライアントアプリケーションが処理していたトランザクションは、トランザクションのタイムアウト時間の経過後、rollbackが指示されます。
ただし、トランザクションのタイムアウトに「0」(タイムアウト:無効)を設定し、以下の条件に該当する場合は、システム管理者がotstranlistコマンドで未解決(処理中)のトランザクションを終了してください。
完了処理(commit/rollback)を発行しないで終了した場合
クライアントアプリケーションが異常終了した場合
クライアントアプリケーションがループ状態になった場合
クライアントアプリケーションが動作するマシンの回線が切断された場合
クライアントアプリケーションが動作するマシンがシステムダウンした場合
注意
トランザクションのタイムアウトは、クライアントアプリケーションのCurrentインタフェースのbegin発行前に、Currentインタフェースのset_timeoutを発行して指定します。set_timeoutを発行しない場合は、データベース連携サービスの環境定義(config)のTRAN_TIME_OUTの設定値が有効となります。
サーバアプリケーションの異常
サーバアプリケーションが異常終了した場合やループ状態になった場合は、原因を取り除いたあと、サーバアプリケーションを再起動してください。
なお、グローバルトランザクション連携時に、サーバアプリケーションが処理していたトランザクションは、トランザクションのタイムアウト時間の経過後、rollbackが指示されます。
ただし、トランザクションのタイムアウトに「0」(タイムアウト:無効)を設定し、以下の条件に該当する場合は、システム管理者がotstranlistコマンドで未解決のトランザクションを終了してください。
クライアントアプリケーションの復帰値に「10004」が通知され、システムログメッセージファイルにエラーメッセージEXTP4656が出力された場合は、トランザクションアプリケーションの異常によりアプリケーションプロセスが異常終了しています。これは、アプリケーションの不具合が原因です。異常終了した原因を調査してください。
サーバアプリケーションがループ状態になった場合は、クライアントアプリケーションにタイムアウトなどが検出されたエラーが通知されます。エラーが通知されたクライアントアプリケーションは、rollbackを発行してトランザクションを終了してください。
サーバアプリケーションの処理結果異常
サーバアプリケーションの処理において期待した処理結果が得られない場合の対処方法を以下に示します。
環境変数ORACLE_SIDの設定に誤りがある場合、正しいデータベースにアクセスできずに、処理結果異常となります。正しい値を設定してください。
Oracleの環境が正しく構築されていない場合、Interstageとの接続にエラーが発生し、処理結果異常となります。正しい値を設定してください。「13.7 Oracle使用時の異常 」を参考に対処してください。
データベース連携サービスを使用する場合は、必ずCurrentインタフェース/JTAを使用してトランザクションを制御する必要があります。したがって、アプリケーションにおいてSQL文で単独にCOMMIT命令を呼び出した場合などは、処理結果異常となります。トランザクションを制御する場合は、Currentインタフェース/JTAを使用してください。
アプリケーション連携中の通信回線異常
アプリケーション連携中に通信回線異常が発生した場合の対処方法を以下に示します。
クライアントアプリケーションとサーバアプリケーション間で通信異常が発生した場合、クライアントアプリケーションからオペレーションを呼び出した復帰値にエラーが通知されます。
以下の対処を行ってください。
クライアントアプリケーションでbeginを発行している場合は、rollbackを発行してトランザクションを終了させてください。通信異常が通知されない場合、トランザクションは、トランザクションのタイムアウト時間の経過後にrollbackされます。通信回線の回復後、クライアントアプリケーションを再起動してください。
クライアントアプリケーションでbeginを発行していない場合は、通信回線の回復後、クライアントアプリケーションを再起動してください。
クライアントアプリケーションが発行した完了処理(commit/rollback)において通信異常で終了した場合、トランザクションのタイムアウト時間の経過後、トランザクションがrollbackされます。
通信回線の回復後、クライアントアプリケーションを再起動してください。
メソッド呼出し時の異常
アプリケーションからメソッド呼出し時に異常が発生した場合の対処方法を以下に示します。
OTSシステムが起動されていない可能性があります。isstatコマンド/otsaliveコマンドでOTSシステムが起動されているかを確認してください。停止している場合は、isstartコマンド/otsstartコマンドでOTSを再起動したあと、再度beginメソッドを発行してください。
OTSシステムに対して、Interstage動作環境定義の「OTS maximum Transaction」の設定値/セットアップ情報ファイルの「TRANMAX」の設定値を超えた要求が発行されています。
クライアントアプリケーションでUserTransactionのlookupが失敗する
クライアントアプリケーションにおいてUserTransactionをlookupした際に以下の例外が発生する場合は、クライアントアプリケーション起動時にプロパティを指定してください。
java.lang.IllegalStateException: has not set GlobalTransactionMode
プロパティに指定する文字列を以下に示します。大文字/小文字は、区別されます。
-Dcom.fujitsu.ObjectDirector.CORBA.GlobalTransactionMode=True
また、使用しているJDK/JREがInterstage Application Serverに同梱されているJDK/JREであるかを確認してください。
参照
他のデータベース連携サービスの例外については、「メッセージ集」の「データベース連携サービスから通知される例外情報」を参照してください。