1
我想連接到在主計算機上運行的主容器中創建的代理。假設主COntainer ID爲[email protected]我如何連接到該容器內的代理並傳遞數據?提前致謝。如何通過http在Jade中向主容器中的代理髮送消息?
我想連接到在主計算機上運行的主容器中創建的代理。假設主COntainer ID爲[email protected]我如何連接到該容器內的代理並傳遞數據?提前致謝。如何通過http在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。
AgentController myAgentController = myContainer.getAgent("agent-local-name");
最後,如果您想要將數據傳遞給代理,則可以使用O2A(對象2代理)消息。這基本上允許您通過代理控制器將任何對象傳遞給代理。
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文檔