Java JADE Leap Android应用程序无法接收主题消息

Java JADE Leap Android应用程序无法接收主题消息,java,android,agents-jade,Java,Android,Agents Jade,这个问题涉及到使用两个android手机,通过主题消息在它们之间发送消息。如果他们都使用send并得到对方的帮助,他们可以很好地接收对方的消息。但是,当使用发送主题消息功能时,它无法工作 但是,我有一个桌面应用程序,可以毫无问题地从android平台接收消息。但是android平台无法接收来自他们的消息 对于Android,我需要做什么特殊的步骤来接收主题消息 创建要连接到JADE的配置文件时,主题管理服务的设置如下所示 profile.setProperty(Profile.SERVICES,

这个问题涉及到使用两个android手机,通过主题消息在它们之间发送消息。如果他们都使用send并得到对方的帮助,他们可以很好地接收对方的消息。但是,当使用发送主题消息功能时,它无法工作

但是,我有一个桌面应用程序,可以毫无问题地从android平台接收消息。但是android平台无法接收来自他们的消息

对于Android,我需要做什么特殊的步骤来接收主题消息

创建要连接到JADE的配置文件时,主题管理服务的设置如下所示

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存储库和 重新编译整个

如果您还有问题,请告诉我们

再见,乔瓦尼