Java 如何在Jade中通过http向主容器中的代理发送消息?

Java 如何在Jade中通过http向主容器中的代理发送消息?,java,javaagents,agents-jade,Java,Javaagents,Agents Jade,我想连接到在计算机上运行的主容器中创建的代理。假设主容器ID是Main-Container@192.118.2.3如何连接到该容器内的代理并传递数据?提前感谢。您需要一个ContainerController(无论是主容器还是代理容器都不重要),它是您关心的代理平台的一部分 一个简单的方法是创建一个新的代理容器并将其连接到平台 import jade.core.Runtime; import jade.core.Profile; import jade.core.ProfileImpl; ..

我想连接到在计算机上运行的主容器中创建的代理。假设主容器ID是Main-Container@192.118.2.3如何连接到该容器内的代理并传递数据?提前感谢。

您需要一个ContainerController(无论是主容器还是代理容器都不重要),它是您关心的代理平台的一部分

一个简单的方法是创建一个新的代理容器并将其连接到平台

import jade.core.Runtime;
import jade.core.Profile;
import jade.core.ProfileImpl;

...

Runtime myRuntime = Runtime.instance();

// prepare the settings for the platform that we're going to connect to
Profile myProfile = new ProfileImpl();
myProfile.setParameter(Profile.MAIN_HOST, "myhost");
myProfile.setParameter(Profile.MAIN_PORT, "1099");

// create the agent container
ContainerController myContainer = myRuntime.createAgentContainer(myProfile);
然后,您可以使用ContainerController的
getAgent()
方法来获取代理控制器

AgentController myAgentController = myContainer.getAgent("agent-local-name");
Object myObject = "Real-Object-Would-Go-Here";
myAgentController.putO2AObject(myObject, false);
最后,如果希望将数据传递给代理,可以使用O2A(对象2代理)消息来传递数据。这基本上允许您通过代理控制器将任何对象传递给代理

AgentController myAgentController = myContainer.getAgent("agent-local-name");
Object myObject = "Real-Object-Would-Go-Here";
myAgentController.putO2AObject(myObject, false);
在代理中(最好是在行为中),您可以像这样监听该对象:

// start accepting O2A communications
setEnabledO2ACommunication(true, 0);
// start monitoring them
addBehaviour(new CyclicBehaviour(this) {
    @Override
    public void action() {
        // get an object from the O2A mailbox
        Object myObject = myAgent.getO2AObject();

        // if we actually got one
        if(myObject != null) {
            // do something with it
        } else {
            block();
        }
    }
});
资料来源:JADE文件


您需要一个ContainerController(无论是主容器还是代理容器都不重要),它是您关心的代理平台的一部分

一个简单的方法是创建一个新的代理容器并将其连接到平台

import jade.core.Runtime;
import jade.core.Profile;
import jade.core.ProfileImpl;

...

Runtime myRuntime = Runtime.instance();

// prepare the settings for the platform that we're going to connect to
Profile myProfile = new ProfileImpl();
myProfile.setParameter(Profile.MAIN_HOST, "myhost");
myProfile.setParameter(Profile.MAIN_PORT, "1099");

// create the agent container
ContainerController myContainer = myRuntime.createAgentContainer(myProfile);
然后,您可以使用ContainerController的
getAgent()
方法来获取代理控制器

AgentController myAgentController = myContainer.getAgent("agent-local-name");
Object myObject = "Real-Object-Would-Go-Here";
myAgentController.putO2AObject(myObject, false);
最后,如果希望将数据传递给代理,可以使用O2A(对象2代理)消息来传递数据。这基本上允许您通过代理控制器将任何对象传递给代理

AgentController myAgentController = myContainer.getAgent("agent-local-name");
Object myObject = "Real-Object-Would-Go-Here";
myAgentController.putO2AObject(myObject, false);
在代理中(最好是在行为中),您可以像这样监听该对象:

// start accepting O2A communications
setEnabledO2ACommunication(true, 0);
// start monitoring them
addBehaviour(new CyclicBehaviour(this) {
    @Override
    public void action() {
        // get an object from the O2A mailbox
        Object myObject = myAgent.getO2AObject();

        // if we actually got one
        if(myObject != null) {
            // do something with it
        } else {
            block();
        }
    }
});
资料来源:JADE文件