• 検索結果がありません。

アプリケーション運用中の異常

ドキュメント内 トラブルシューティング集 (ページ 132-135)

第9章 J2EEアプリケーション開発・運用時の異常

15.2 アプリケーション運用中の異常

イベントサービスでアプリケーション運用中に異常が発生した場合の対処方法について説明します。

コンシューマアプリケーション運用中に異常が発生した場合、発生したタイミングにより対処を行う必要があります。また、対 処方法は、コンシューマアプリケーションが接続情報を保存している場合としていない場合で異なります。

・ アプリケーション運用中にコネクションが切断される場合

・ コンシューマアプリケーションの異常終了(接続情報を保存している場合)

・ コンシューマアプリケーションの異常終了(接続情報を保存していない場合)

・ 動的イベントチャネルとの通信時に、システム例外「COMM_FAILURE」およびマイナーコード「0x464a01ec/

0x464a09ec」が復帰される場合

・ 動的イベントチャネルの作成が遅延して、エラーメッセージod10942が出力される場合

・ その他

アプリケーション運用中にコネクションが切断される場合

アプリケーション運用中に、ユーザ例外「Disconnected」が復帰された場合、イベントチャネルの作成時に「コネクション情報を 自動回収する処理」を有効と設定(esmkchnlコマンド実行時に-autodisconオプションを指定)したため、CORBAサービス のクライアント側無通信監視時間超過によりコネクションが切断された可能性があります。

アプリケーションを継続して運用する場合は、イベントチャネルへの接続から行ってください。

コンシューマアプリケーションの異常終了(接続情報を保存している場合)

■イベントデータの待合せ中に異常終了した場合

イベントチャネルは、イベントデータ待合せ中のコンシューマアプリケーションが異常終了しても、イベントチャネル内では proxyのイベントデータの待合せ状態が解除されず、サプライヤからイベントデータが送信されるまで(またはイベントデータの 待合せ時間まで)、イベントデータを待ち合わせます。このため、コンシューマアプリケーションの再起動後に、同一proxyで 受信処理を行った場合は、イベントチャネル内でpullメソッド/pull_waitメソッドが2重に発行されることになり、以下の例外が 復帰される可能性があります。

システム例外:BAD_PARAM マイナーコード:0x464a09e5

本現象が発生した場合、pull_cancelメソッドを発行し、イベントデータの待合せ状態を解除した後に、pullメソッドおよび pull_waitメソッドを発行してください。

■トランザクション運用でイベントデータ受信後、commit/rollback処理前に異常終了した場合

トランザクション運用中のアプリケーションが異常終了しても、イベントチャネルはトランザクションのタイムアウト時間までト ランザクション処理中となります。

このため、受信済みのイベントデータを再受信する場合は、必ずrollbackメソッドを発行後にbeginメソッドを発行して再度ト ランザクション処理を行ってください。

なお、トランザクション処理中にdisconnectメソッドを発行した場合、イベントチャネルは自動的にcommit処理を実行します。

コンシューマアプリケーションの異常終了(接続情報を保存していない場合)

■トランザクション運用中、イベントデータ受信後、commit/rollback処理前に異常終了した場合

Point-To-Pointモデルの運用など、コンシューマアプリケーションが接続情報を保存せずに、コンシューマの起動ごとにproxy を作成してローカルトランザクションを実施している場合、ローカルトランザクションのタイムアウト時間に大きい値を設定し ていると、前回受信したデータ(トランザクションが完了していない状態のデータ)を早く受信できません。

以下のどちらかの対処を行ってください。本対処によりトランザクションタイムアウトを早く検出し、前回受信したデータ(トラ ンザクションが完了していない状態のデータ)を早く受信できます。

・ イベントチャネル起動前に、essetcnfchnlコマンド(-ltrntimeオプション指定)で、ローカルトランザクションのタイムアウト時間 を300秒程度(初期設定値:300秒)に変更します。

・ イベントサービス起動前に、essetcnfコマンド(-ltrntimeオプション指定)で、ローカルトランザクションのタイムアウト時間を 300秒程度(初期設定値:300秒)に変更します。

なお、イベントチャネルの不揮発チャネル運用中の場合は、トランザクションタイムアウトの検出を待たずに、イベントチャ ネルの再起動を行うことにより、ローカルトランザクションは解除され、前回受信したイベントデータを復元できます。

動的イベントチャネルとの通信時に、システム例外「COMM_FAILURE」およびマイナーコード「0x464a01ec/

0x464a09ec」が復帰される場合

動的イベントチャネルとの通信時に、Windows(R)の場合はイベントログ上、Solaris/Linuxの場合はシステムログ上に、エ ラーメッセージod10939が出力された場合は、以下のインタフェースに指定したホスト名またはポート番号に誤りがある可能性 があります。

・ イベントサービス使用時

- C言語の場合:EventFactory_create()

- C++言語の場合:EventFactory::create()

- Java言語の場合:com.fujitsu.ObjectDirector.EventService.EventFactory.create()

- COBOLの場合:EVENTFACTORY-CREATE

・ ノーティフィケーションサービス使用時

- C言語の場合:CosNotifyChannelAdmin_EventChannelFactory_create_channel()

- C++言語の場合:CosNotifyChannelAdmin::EventChannelFactory::create_channel()

- Java言語の場合:org.omg.CosNotifyChannelAdmin.EventChannelFactory.create_channel()

- COBOLの場合:COSNOTIFYCHANNELADMIN-EVENTCHANNELFACTORY-CREATE-CHANNEL

アプリケーションプログラムにおいて、上記のインタフェースに指定したホスト名およびポート番号に誤りがないかを確認し てください。

また、当該イベントファクトリを停止する場合は、esstopfctryコマンドを以下のオプションで実行し、すべての動的イベントチャ ネルを停止してください。

esstopfctry -o off

動的イベントチャネルの作成が遅延して、エラーメッセージod10942が出力される場合

イベントファクトリは、1プロセスかつ1スレッドのシングルスレッドのサービスであるため、同時に複数の要求を処理できません。

アプリケーションがイベントファクトリに同時に複数の処理要求を発行した場合、2件目以降の処理要求はCORBAサービ スにキューイングされ、イベントファクトリの処理が可能になるまで待ち状態となります。このため、アプリケーションがイベン トファクトリに大量の処理要求を発行した場合、キューイング中のリクエストにタイムアウトが通知されて、エラーメッセージ

od10942が出力される可能性があります。

イベントファクトリに大量の処理要求を発行する場合は、エラーメッセージod10942の出力を抑止するため、エラーメッセージ od10942のユーザの対処を行ってください。エラーメッセージod10942のユーザの対処については、「メッセージ集」の「メッ セージ番号がodで始まるメッセージ」-「od10900番台のメッセージ」-「od10942」を参照してください。

その他

イベントサービスのアプリケーションは、CORBAサービスのアプリケーションです。アプリケーション運用中に異常が発生した 場合、「第12章 CORBAサービス使用時の異常」-「12.4 アプリケーションがエラーとなる」も参考にして対処してください。な お、Java言語のアプリケーション作成時の環境設定ORBおよび環境変数CLASSPATHの設定については、「アプリケーショ ン作成ガイド(イベントサービス編)」の「アプリケーションの開発(Java言語)」-「アプリケーションの作成方法」-「クライア ントアプリケーションの作成方法」も参照してください。

ドキュメント内 トラブルシューティング集 (ページ 132-135)