2011-12-27 1 views
0

。 IPMS 1.2でJade 3.6を使用しています。私は、スレーブ1(元のプラットフォーム)とスレーブ2(ターゲットプラットフォーム)の両方でサービスを有効にしました。 -accept-foreign-agents trueオプションも両方のプラットフォームで設定されています。タイムアウトの設定も増やしました。次のように移行のためのコードは次のとおりです。JADE IPMSインタープラットフォームエージェントの移行

AID remoteAMS = new AID("[email protected]:1099/JADE", AID.ISGUID); 
remoteAMS.addAddresses("http://slave2:7778/acc"); 
PlatformID destination = new PlatformID(remoteAMS); 
agent.doMove(destination); 

私はスレーブ1にタイムアウトを得ていたが、詳細なログを有効にした後、私はスレーブ2に次のエラーを取得しています:

WARNING: FAILURE-ams-9 - Receiver does not exist. 
jade.core.NotFoundException: getContainerID() failed to find agent [email protected] 
    at jade.core.MainContainerImpl.getContainerID(MainContainerImpl.java:1318) 
    at jade.core.messaging.MessagingService.deliverInLocalPlatfrom(MessagingService.java:1255) 
    at jade.core.messaging.MessagingService.deliverNow(MessagingService.java:1187) 
    at jade.core.messaging.MessageManager$Deliverer.run(MessageManager.java:152) 
    at java.lang.Thread.run(Thread.java:662) 

方法上の任意のヒントをこれをデバッグするには?

答えて

1

この問題は、プラットフォーム上で設定され、適切なホスト名を持っていないことが原因です。 JADEはホスト上で127.0.0.1を 'slave1'に、ターゲットプラットフォーム上で 'slave2'に解決できる必要があります。この問題を解決するために、私は私の/ etc/hostsファイルを編集し、両方のシステムではlocalhostをコメントアウト:同じ

# 127.0.0.1  localhost 
127.0.0.1  slave1 
192.168.56.101 slave2 

は、スレーブ2のために行きます。詳細なチュートリアルでは、これと他のいくつかのエラーについては、Agent Mobility with JADE and JIPMSで説明しました。

0

この問題は、JAVA RMIでも使用されている標準ポート1099でJADEプラットフォームを実行することによっても発生する可能性があります。ポートがすでに使用されている場合、同じエラーが受信されます。ホストファイル、両方のコンピュータの空いているポート番号、JADEプラットフォームを起動するコマンドのパラメータが正しく入力されているかどうかも確認する必要があります。もちろん、JADEプラットフォームで使用するポートが許可されている場合は、必ずfirwallを確認してください。

しかし、私はプラグインをインストールし、それがうまく行われたときには、私の経験です。

+0

ようこそスタックオーバーフロー!あなたの投稿にシグネチャ/タグラインを使用しないでください。あなたのボックスはあなたの署名として数えられ、あなたのプロフィールを使って好きな自分に関する情報を投稿することができます。 [署名/タグラインに関するよくある質問](http://stackoverflow.com/faq#signatures) –

0

IPMS 2.0とジェイド4.3.0を使用することで簡単にあなたのエージェントを移行することができます。あなたがしなければならないのは、ammをエージェントの移動先のremoteAMS AIDアドレスに入れることです。 このように:

AID remoteAMS = new AID("[email protected]:1099/JADE", AID.ISGUID); 
remoteAMS.addAddresses("http://slave2:7778/acc"); 

PlatformID destination = new PlatformID(remoteAMS); 
agent.doMove(destination);