誰能告訴我如何通過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. 另一個代理商Creata Jade Agent
- 2. Jade Agent無法接收多個消息
- 3. Agent在Multi-agent系統中的行爲?
- 4. Jade Agents中的NoClassDefFoundError?
- 5. NewRelic :: Agent :: ForceRestartException
- 6. user - agent ios 5.0?
- 7. Flume Agent failure Handlling
- 8. 在User-Agent
- 9. webistrano ssh-agent
- 10. Microsoft Monitoring Agent Configuration
- 11. Vicidial Agent API
- 12. Jacoco agent - no output
- 13. TFS 2015 Build Agent
- 14. R agent-based proximity
- 15. User Agent Alternative
- 16. JADE找不到代理
- 17. User-Agent和Blackberry 6.0?
- 18. Jade + AngularJS
- 19. java中的Jade jar +代碼
- 20. Swing ContainerS(JFrameS等)中的動作
- 21. Joomla組件與AJAX/jQuery填充#containers
- 22. 重載<< operator C++ stl containers
- 23. 爲std :: containers記錄分配器?
- 24. IBM Containers中的securityTest =「wl_unprotected」IBM MobileFirst問題
- 25. Windows Server Containers域帳戶驗證
- 26. Jade模塊如何工作 - Jade
- 27. Node.js:Consolidate.js + Jade無法正確呈現Jade
- 28. Jade - Angular 2 Jade中的結構指令
- 29. Objective-C或C++有沒有Agent開發框架?
- 30. JADE action()不起作用
這是一個老問題,但任何人搜索有一個較新的類似的問題,接受的答案是集中於獲取Containers作爲「正在進行的服務」:http://stackoverflow.com/questions/9094522/getting-a-list-of-all-jade-containers – edmundo096 2015-10-20 21:04:21