谁能告诉我如何通过java代码找到可用的代理容器?我正在使用JADE代理框架,并且我已经想出了如何创建新容器,但找不到现有容器(以便可以在其中部署代理)。Jade Agent Containers
4
A
回答
5
这样做有两种方法,具体取决于您是希望通过正在进行的服务还是通过消息中的当前快照接收信息。
要获取当前可用代理容器标识的快照,请向代理管理服务(AMS)发送请求消息并等待其答复。使用JADE管理本体论和QueryPlatformLocationsAction内,发送和接收方法是:
private void queryAMS() throws CodecException, OntologyException {
QueryPlatformLocationsAction query = new QueryPlatformLocationsAction();
Action action = new Action(myAgent.getAID(), query);
ACLMessage message = new ACLMessage(ACLMessage.REQUEST);
message.addReceiver(myAgent.getAMS());
message.setLanguage(FIPANames.ContentLanguage.FIPA_SL);
message.setOntology(JADEManagementOntology.getInstance().getName());
myAgent.getContentManager().fillContent(message, action);
myAgent.send(message);
}
private void listenForAMSReply() throws UngroundedException, CodecException,
OntologyException {
ACLMessage receivedMessage = myAgent.blockingReceive(MessageTemplate
.MatchSender(myAgent.getAMS()));
ContentElement content = myAgent.getContentManager().extractContent(
receivedMessage);
// received message is a Result object, whose Value field is a List of
// ContainerIDs
Result result = (Result) content;
List listOfPlatforms = (List) result.getValue();
// use it
Iterator iter = listOfPlatforms.iterator();
while (iter.hasNext()) {
ContainerID next = (ContainerID) iter.next();
System.out.println(next.getID());
}
}
为了得到这个信息作为一个持续服务,并接收每个容器的数据筒,因为它与AMS注册创建一个扩展AMSSubscriber的行为。注册的处理程序AddedContainer事件,你将能够访问新的可用容器的数据筒:
public class AMSListenerBehaviour extends AMSSubscriber {
@Override
public void installHandlers(Map handlersTable) {
handlersTable.put(AddedContainer.NAME, addedContainerHandler);
}
public final class AddedContainerHandler implements EventHandler {
@Override
public void handle(Event ev) {
AddedContainer event = (AddedContainer) ev;
ContainerID addedContainer = event.getContainer();
System.out.println(addedContainer.getID());
}
希望这有助于
拉斯
+0
in新的JADE有没有其他的方式比与AMS沟通? – Purushottam 2012-02-01 10:57:29
相关问题
- 1. Jade Agent无法接收多个消息
- 2. 另一个代理商Creata Jade Agent
- 3. Agent在Multi-agent系统中的行为?
- 4. JADE找不到代理
- 5. TFS 2015 Build Agent
- 6. 在User-Agent
- 7. Vicidial Agent API
- 8. Jacoco agent - no output
- 9. Flume Agent failure Handlling
- 10. java中的Jade jar +代码
- 11. User-Agent和Blackberry 6.0?
- 12. JADE action()不起作用
- 13. Objective-C或C++有没有Agent开发框架?
- 14. Swing ContainerS(JFrameS等)中的动作
- 15. IBM Containers中的securityTest =“wl_unprotected”IBM MobileFirst问题
- 16. 重载<< operator C++ stl containers
- 17. 为std :: containers记录分配器?
- 18. 在Ubuntu10.04 Linux中启动Jade
- 19. Webpack jade-html-loader
- 20. Jade from external source
- 21. Angular2 templateUrl with Jade?
- 22. Jade Two Agents communication
- 23. JADE与春天?
- 24. javascript in jade
- 25. JADE ACL-Message
- 26. Jade的Sweetalert2
- 27. Jade无法创建代理MyAgent
- 28. 从Teamcity卸载Build Agent
- 29. 反编译/提取microsoft agent?
- 30. OpenAM Apache Agent + Apache 64bit错误
这是一个老问题,但任何人搜索有一个较新的类似的问题,接受的答案是集中于获取Containers作为“正在进行的服务”:http://stackoverflow.com/questions/9094522/getting-a-list-of-all-jade-containers – edmundo096 2015-10-20 21:04:21