Servlets 代理servlet通信
我刚开始使用Jade,我想知道是否可以使用JadeGateway将消息从代理发送到servlet,我已经设法将消息从servlet发送到代理,但我希望代理发回一个回复,而我似乎没有任何效果。Servlets 代理servlet通信,servlets,agents-jade,Servlets,Agents Jade,我刚开始使用Jade,我想知道是否可以使用JadeGateway将消息从代理发送到servlet,我已经设法将消息从servlet发送到代理,但我希望代理发回一个回复,而我似乎没有任何效果。 下面是我的servlet的doPost方法: String champ = request.getParameter("action"); try { JadeGateway.execute(new OneShotBehaviour() {
下面是我的servlet的doPost方法:
String champ = request.getParameter("action");
try {
JadeGateway.execute(new OneShotBehaviour() {
@Override
public void action() {
out.println("action");
final ACLMessage msg = new ACLMessage(ACLMessage.REQUEST);
AID theAgent = new AID("Agent47", false);
msg.addReceiver(theAgent);
msg.setConversationId("Agent servlet communication");
msg.setContent(champ);
myAgent.send(msg);
ACLMessage res = myAgent.receive();
if (res != null) {
System.out.println(res.getContent());
}
}
});
servlet将用户在jsp页面中输入的数据发送给代理。
这是代理的代码://The cyclic behaviour i added to the agent
public class ProcessExternalRequests extends CyclicBehaviour {
private MessageTemplate mt;
@Override
public void action() {
mt = MessageTemplate.MatchConversationId("Agent servlet communication");
ACLMessage msg = myAgent.receive(mt);
if(msg!=null){
if(msg.getPerformative()==ACLMessage.REQUEST){
String content = msg.getContent();
System.out.println("Agent " + myAgent.getAID().getLocalName() + " Content = " + content);
//Response
ACLMessage res = new ACLMessage(ACLMessage.CONFIRM);
res.addReceiver(msg.getSender());
res.setContent("Bien reçu!");
myAgent.send(res);
}
}else{
block();
}
我的问题是代理不会将消息发送回servlet。我该怎么办