Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド

[目次][索引][前へ][次へ]

12.3.1 スマートエージェントの互いの検知方法

エージェント1とエージェント2という二つのエージェントが,同じサブネット上の異なる二つのマシンから同じUDPポートを監視し,エージェント1がエージェント2より前に起動する場合,次のようなことが起こります。

エージェント2が正常に終了すると(例えば,<Ctrl>+<C>を使用して終了させる),エージェント1はエージェント2がもう使用できないことを通知されます。

エージェント2が異常終了すると(例えば,タスクマネージャを使用してエージェント2を終了させる),エージェント1はエージェント2が使用できないことを通知されません。このため,エージェント1のディクショナリに存在しないオブジェクトリファレンスをクライアントが要求すると,エージェント1はエージェント2にリクエストを転送します。その結果,エージェント1はエージェント2からの応答を得られないため,エージェント2が使用できないことを検出し,エージェント1はクリーンアップ(以後,エージェント2を使用できないとみなします)を行います。または,エージェント1が行うハートビートメッセージにエージェント2が返信しない場合,エージェント1はエージェント2が使用できないとみなし,クリーンアップを行います。

エージェント1がクリーンアップを行うまで,osfindを実行しても二つのエージェントを表示し,エージェント2についてはObjLocation::Fail例外を表示します。