用java post xml数据到服务器 服务器是异步处理不能及时返回response信息 怎样才能及时返回

经理说用comet长连接,我知道长连接用法,可是在这里怎么用才能让他及时返回response 有知道的告诉我个流程

第1个回答  推荐于2016-06-26
你都已经异步了,直接返回啊,把处理逻辑丢到一个线程里,用线程池执行。举例:
processService类://service一般是单例

private static ExecutorService pool = Executors. newSingleThreadExecutor();//创造一个线程池

public void executeJobInPool(MyThread t){//丢到线程池执行
pool.execute(t);
}
MyThread类:
public class MyThread inplements Runnable(){
private xxxEntity;//把需要处理的数据封装到一个对象里

public MyThread (xxxEntity){
this.xxxEntity = xxxEntity;//构造
}
public void run() {
....//处理

}
}
xxxAction类:
private ProcessService processService;
...get set
@requestMapping("xxx.action")
public void processJob(HttpRequest req,HttpResponse response){
xxxEntity e = new xxxEntity();
e.setxxx //根据req构造xxxEntity
MyThread t = new MyThread (e);
processService.executeJobInPool(t);//丢到线程池执行,异步

HashMap result = new HashMap();

result.put("flag","success");//后台处理中的标志
response.getWriter().write(JsonUtil.toJson(result));
}

---纯手打,xxxAction中丢到线程池里面执行后,会立即走下一步的,这样就能即时返回给前台了追问

在服务器那块单独写个长连接,不破坏原有的处理代码,能不能解决这个问题啊?

追答

长连接能及时返回response吗?这个不是很清楚

追问

我只记得经理说每次提交的数据后返回的response存在一个map里 ,然后根据消息id取,他大概什么意思啊?

追答

这个问你经理啊,哥们。。你在百度知道问,首先,大家不知道你的项目架构,其次,感觉你的要求还有点小复杂,要看具体代码。 So,直接问经理或者同事就好了。 在知道问的话,大家只能提供给你一个大概的思路

本回答被提问者采纳
第2个回答  2014-08-19
你用的http还是webservice?能否贴出部分代码?追问

用的http ,你是说服务器端的吗?

追答

服务器端和客户端都看一下啊,看能否帮助解决这个问题

相似回答