0

我正在使用 IPMS 和 Jade 进行跨平台代理迁移。我正在使用 Jade 3.6 和 IPMS 1.2。我已经在 slave1(原始平台)和 slave2(目标平台)上启用了服务。该-accept-foreign-agents true选项也在两个平台上设置。我也增加了超时设置。迁移代码如下:

AID remoteAMS = new AID("ams@slave2: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 ams@slave1
    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)

关于如何调试的任何提示?

4

3 回答 3

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

slave2 也是如此。我在这里的详细教程中介绍了这个错误和其他一些错误:Agent Mobility with JADE and JIPMS

于 2011-12-29T04:02:09.280 回答
0

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

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

于 2013-01-23T01:26:25.967 回答
0

通过将 Jade 4.3.0 与 IPMS 2.0 一起使用,您可以轻松迁移您的代理。您需要做的是将 amm 放入目标的remoteAMS AID 地址中,您想将代理移动到该地址。像这样:

AID remoteAMS = new AID("amm@slave2:1099/JADE", AID.ISGUID);
remoteAMS.addAddresses("http://slave2:7778/acc");

PlatformID destination = new PlatformID(remoteAMS);
agent.doMove(destination);
于 2013-06-28T11:02:14.233 回答