Restful Web服务中的异步多线程



我正在开发一个rest式web服务,部署在Glassfish 4中,使用Netbeans和Jersey用Java编程,执行时间很长(在某些情况下超过4-5分钟)。为了让用户在没有操作的情况下保持更新,并防止浏览器超时错误,我决定启动主线程来处理请求,并返回一个html页面,该页面将重定向到另一个rest web页面,该页面将测试请求是否以轻微延迟完成。

问题是第一个web服务在返回html响应之前等待线程完成,所以线程几乎是无用的。有没有办法绕过它?

这是第一个服务:

@GET
@Produces("text/html")
public String getXml(@QueryParam("id") String id) {
    Random rand=new Random((new Date()).getTime());
    long clientId=rand.nextLong();
    MainTestingThread mtt=new MainTestingThread(id,clientId);
    mtt.run();
    return "<!DOCTYPE html><html><head><meta HTTP-EQUIV="refresh" CONTENT="10;URL=/checkstatus?clientid="+clientId+""/></head><body>Analysis Started and your clientID is ""+clientId+"".<br/>Please wait...</body></html>";
}

谢谢,如果我错过了任何信息,我很抱歉,但我对web服务很陌生。

经过一番研究和一夜好眠后,我明白了。问题是我使用了mtt.run()而不是mtt.start(),所以它尝试在同一线程上运行它。

相关内容

  • 没有找到相关文章

最新更新