2011-12-27 102 views
0

我正在将IPMS与Jade用于平台间代理迁移。我使用的是IPMS 1.2的Jade 3.6。我已启用slave1(原始平台)和slave2(目标平台)上的服务。 -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); 

我只是得到上SLAVE1超时,但启用详细日志记录后,我发现了以下错误的SLAVE2:

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文件,并注释掉本地主机上的两个系统:

# 127.0.0.1  localhost 
127.0.0.1  slave1 
192.168.56.101 slave2 

也是一样的SLAVE2。我在这里详细介绍了这个和其他一些错误:Agent Mobility with JADE and JIPMS

0

这个问题也可能是由JAVA RMI也使用的标准端口1099上运行JADE平台引起的。当端口已被使用时收到相同的错误。您还应该检查主机文件,这两个计算机上的自由端口号以及是否在启动JADE平台的命令中输入了正确的参数。当然,如果您允许使用JADE平台所需的端口,请检查您的firwall。

但是,这是我的经验,当我安装插件,并使其工作。

+0

欢迎来到Stack Overflow!请勿在您的帖子中使用签名/标语。您的用户箱计为您的签名,您可以使用您的个人资料发布您喜欢的任何关于您自己的信息。 [关于签名/标语的常见问题](http://stackoverflow.com/faq#signatures) – 2013-01-23 01:59:34

0

通过在IPMS 2.0中使用Jade 4.3.0,您可以轻松迁移您的代理。您需要做的是将amm放在您要移动代理的目的地的远程AMS 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);