0

我有一个基于 jsp/servlet 的网络应用程序。

我有一个“清理”按钮,它调用一个 servlet,请求一直持续到 DAO 类。DAO 类执行不同的数据库活动,例如将数据从主表移动到备份表,然后从主表中删除数据等。

截至目前,此活动是同步的,用户需要等到发送响应。

我想实现与异步任务相同的场景,用户只收到一条消息“触发清理活动”

执行此任务的最佳/最简单方法是什么。我不能使用调度程序。

我的容器是 TomCat。

4

3 回答 3

2

ExecutorService是最稳健的解决方案。创建一个简单的线程也足够了。然而,更大的问题是同步。用于Semaphore控制两个用户是否不同时进行清理。

于 2012-10-22T18:45:33.097 回答
2

最简单但不同的解决方案可能是在客户端使用一些 AJAX 行为。有很多简单/强大的框架(JS 文件)可以帮助您在页面中实现 AJAX。使用 AJAX,您只需异步提交请求并在服务器端处理请求时显示客户端消息“已触发清理活动”。如果用户等待,服务器进程将返回并显示“成功”消息,否则用户可以自由浏览其他页面或执行其他操作。

于 2012-10-22T18:46:06.230 回答
0

我们为我们的项目做过一次,效果很好。

只要处理请求没有问题,我们就会向用户发送 200 ok。我们使用 java executorservice 来进行清理。

如果出现问题,请单独通知用户。

于 2012-10-22T18:46:40.507 回答