Interstage Application Server/Interstage Web Server トラブルシューティング集 |
目次
索引
![]() ![]() |
第12章 イベントサービス運用時の異常 |
イベントサービスでアプリケーション運用中に異常が発生した場合の対処方法について説明します。
コンシューマアプリケーション運用中に異常が発生した場合、発生したタイミングにより対処を行う必要があります。また、対処方法は、コンシューマアプリケーションが接続情報を保存している場合としていない場合で異なります。それぞれについて説明します。
アプリケーション運用中に、ユーザ例外“Disconnected”が復帰された場合、イベントチャネルの作成時に“コネクション情報を自動回収する処理”を有効と設定(esmkchnlコマンド実行時に-autodisconオプションを指定)したため、CORBAサービスのクライアント側無通信監視時間超過によりコネクションが切断された可能性があります。アプリケーションを継続して運用する場合は、イベントチャネルへの接続から行ってください。
イベントチャネルは、イベントデータ待ち合わせ中のコンシューマアプリケーションが異常終了しても、イベントチャネル内ではproxyのイベントデータの待ち合わせ状態が解除されず、サプライヤからイベントデータが送信されるまで、またはイベントデータの待ち合わせ時間まで、イベントデータを待ち合わせます。そのため、コンシューマアプリケーションの再起動後に、同一proxyで受信処理を行った場合は、イベントチャネル内でpullメソッドまたはpull_waitメソッドが2重に発行されることになり、以下の例外が復帰される可能性があります。
システム例外:BAD_PARAM
マイナーコード:0x464a09e5
この場合、pull_cancelメソッドを発行し、イベントデータの待ち合わせ状態を解除した後に、pullメソッドおよびpull_waitメソッドを発行してください。
トランザクション運用中のアプリケーションが異常終了しても、イベントチャネルはトランザクションのタイムアウト時間までトランザクション処理中です。そのため、受信済みのイベントデータを再度受信する場合は、必ずrollbackメソッドを発行後にbeginメソッドを発行して再度トランザクション処理を行ってください。
なお、トランザクション処理中にdisconnectメソッドを発行した場合、イベントチャネルは自動的にcommit処理を実行します。
Point-To-Pointモデルの運用などにおいて、コンシューマアプリケーションが接続情報を保存せず、コンシューマの起動ごとにproxyを作成してローカルトランザクションを実施している場合、ローカルトランザクションのタイムアウト時間に大きい値を設定していると、前回受信したデータ(トランザクションが完了していない状態のデータ)を早く受信できません。
以下のいずれかの操作を行うことで、トランザクションタイムアウトの検出が早くなり、前回受信したデータ(トランザクションが完了していない状態のデータ)を早く受信できます。
なお、イベントチャネルの不揮発運用中の場合は、トランザクションタイムアウトの検出を待たずに、イベントチャネルの再起動を行うことによって、ローカルトランザクションは解除され、前回受信したイベントデータを復元できます。
動的イベントチャネルとの通信時に、Windows(R)の場合はイベントログ上、Solaris/Linuxの場合はシステムログ上に、エラーメッセージod10939が出力された場合は、以下のインタフェースに指定したホスト名またはポート番号に誤りがある可能性があります。
アプリケーションプログラムにおいて、上記のインタフェースに指定したホスト名およびポート番号に誤りがないかを確認してください。
また、当該イベントファクトリを停止する場合は、esstopfctryコマンドを以下のオプションで実行し、すべての動的イベントチャネルを停止してください。
esstopfctry -o off |
目次
索引
![]() ![]() |