誰能告訴我如何通過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