我刚接触jersey,jsp和web应用程序开发,所以希望这不是一个愚蠢的问题。我有一个jsp,目前当用户点击按钮时,它会启动一个超文本传输协议请求,大约需要5-10分钟才能返回。一旦完成,它们就会被重定向到另一个页面。
我在想,有没有可能或者甚至是可取的做法,我将应用程序多线程,这样繁重的处理就会开始,但是用户会立即被重定向到下一个.jsp。如果多线程是不可能的,你会推荐其他方法来处理web应用程序中的繁重处理吗?
发布于 2011-09-20 22:46:44
JSP基本上是一个Servlet (它被转换成Java Servlet类并进行编译)。从理论上讲,您可以在servlet中(因此在JSP中,通过scriptlet)启动一个新线程,但由于多种原因,并不建议这样做。
最好是通过ajax进行异步HTTP调用,一旦调用完成,立即向用户显示其他内容,并在回调返回时显示结果。
发布于 2011-09-20 23:20:37
与其每次都创建一个新线程,不如使用一个不断轮询共享队列的工作线程来提高效率。例如,使用您的web请求的ArrayBlockingQueue可以简单地将对象添加到队列并返回给用户,而您的工作线程(或重复调度的作业)可以处理繁重的处理。
发布于 2011-09-20 22:44:29
您可以创建一个TimerTask (或Quartz Job)并将其设置为立即执行,然后将用户重定向到其他页面,而不是在JSP中等待流程完成。让Job将结果存储在可由另一个JSP访问中心位置(如果您想稍后提取Job的结果,可能是通过ajax)。这样做,您就不必手动管理线程(这很容易出错),您获得了异步功能,用户在大约5-10分钟内不需要看到空白浏览器屏幕。
https://stackoverflow.com/questions/7487034
复制相似问题