Java JADE Leap Android应用程序无法接收主题消息
这个问题涉及到使用两个android手机,通过主题消息在它们之间发送消息。如果他们都使用send并得到对方的帮助,他们可以很好地接收对方的消息。但是,当使用发送主题消息功能时,它无法工作 但是,我有一个桌面应用程序,可以毫无问题地从android平台接收消息。但是android平台无法接收来自他们的消息 对于Android,我需要做什么特殊的步骤来接收主题消息 创建要连接到JADE的配置文件时,主题管理服务的设置如下所示Java JADE Leap Android应用程序无法接收主题消息,java,android,agents-jade,Java,Android,Agents Jade,这个问题涉及到使用两个android手机,通过主题消息在它们之间发送消息。如果他们都使用send并得到对方的帮助,他们可以很好地接收对方的消息。但是,当使用发送主题消息功能时,它无法工作 但是,我有一个桌面应用程序,可以毫无问题地从android平台接收消息。但是android平台无法接收来自他们的消息 对于Android,我需要做什么特殊的步骤来接收主题消息 创建要连接到JADE的配置文件时,主题管理服务的设置如下所示 profile.setProperty(Profile.SERVICES,
profile.setProperty(Profile.SERVICES, "jade.core.messaging.TopicManagementFEService");
关于这个问题的疑难解答有什么建议吗?我用嗅探器查看了一下,两部android手机之间不会发送消息。但它肯定会被发送到PC应用程序
在管理GUI的控制台中,我看到消息传出,因为我得到以下消息
May 25, 2013 2:21:25 PM jade.core.BackEndContainer messageOut
INFO: BE-192.168.1.114_55555-1@192.168.1.114 - Delivering OUT message INFORM, size=431
JADE远程代理管理GUI正在桌面上运行,参数如下
java -cp .;%JADE_JARS% jade.Boot -gui -host %JADE_IP% -port %JADE_PORT% -nomtp -jade_domain_df_autocleanup true -services jade.core.messaging.TopicManagementService;jade.core.event.NotificationService;jade.core.mobility.AgentMobilityService;jade.core.event.NotificationService;jade.imtp.leap.nio.BEManagementService;
代理使用以下代码订阅主题
public void subscribeTopic(String... topics)
{
for (String topic : topics)
{
TopicManagementHelper helper = (TopicManagementHelper) getHelper(TopicManagementHelper.SERVICE_NAME);
if (helper != null)
{
AID topicID = helper.createTopic(topic.toLowerCase());
try
{
helper.register(topicID);
this.subscribedTopics.add(topic.toLowerCase());
}
catch (ServiceException e)
{
logger.log(Level.SEVERE, "Could not subscribe to topic '" + topic + "'.", e);
}
}
}
}
这是使用TickerBehaviour接收消息的行为
public void onTick()
{
boolean done = false;
String topic="location";
LocationData navupdate = readTopicMessageContent(topic, ACLMessage.INFORM, LocationData.class);
if (navupdate != null )
{
while (!done){
navupdate = myLocalAgent.readTopicMessageContent(topic, ACLMessage.INFORM, LocationData.class);
if (navupdate == null)
done = true;
}
}
block();
}
发送主题消息的代码是
public void sendTopicMessageContent(String topicName, int performative, Serializable object)
{
ACLMessage message = new ACLMessage(performative);
message.setOntology(object.getClass().getName());
message.setContentObject(object);
TopicManagementHelper helper = getTopicManager();
AID rcvr=helper.createTopic(topic.toLowerCase());
message.addReceiver(rcvr);
send(message);
}
在经历了很多麻烦和挫折之后,我修改了JADE下载中名为topic的示例代码,以便与Android一起工作。这仍然不起作用。我把它贴到JADE的邮件列表上,收到了以下回复。请注意,这是版本4.3.0,以备将来参考 嗨 实际上,主题注册的方式有一个bug 管理拆分容器中的代理 非常感谢您的提示 这个问题现在应该解决了。为了得到修复,你应该 获取最后的JADE源代码(仅服务器端:jadeAndroid不是 受此修复程序影响)从JADE SVN存储库和 重新编译整个 如果您还有问题,请告诉我们 再见,乔瓦尼