在不阻止客户端的情况下执行方法

时间:2009-07-08 15:38:35

标签: jsp business-logic

我正在使用Java来创建Web应用程序。 应用程序必须加载一个表单,该表单将其数据发送到调用长业务逻辑的jsp。 我需要jsp会返回一条消息,比如“感谢您使用我的服务,当进程完成时会向您发送一封电子邮件。”

问题在于,如果我写下这样的话:

<html>
<head></head>
<body>
...
<span>thank you for using my service, an email will sent to you when the proccess is done</span>
...
<% businessClass.doLongOperation(); %>
...
...
</Body>
</html>

jsp将长时间运行,用户必须等待操作结束。此外,如果用户关闭浏览器,我不确定jsp是否会继续其工作。

如何将长操作与jsp隔离,这样用户就不必等待所有执行时间,又如何使长操作执行不依赖于浏览器?

NAOR

1 个答案:

答案 0 :(得分:1)

您的JSP可能由servlet或Struts Action或Spring MVC Controller在服务器端支持。

在该对象中,执行异步执行:

executor.execute(new Runnable() {

    public void run() { businessClass.doLongOperation(); }
});

executorjava.util.concurrent.Executor的实例。