1

目的:生成excel报告。单击 UI 中的提交按钮后,我调用了控制器(JAVA)。之后,我使用过程填充数据并在服务层进行操作。这需要很长时间,因此我在 UI 上收到网关超时错误(服务器上有一定的负载)。所以,现在我打算从 UI 调用控制器并告诉用户 Excel 报告将通过电子邮件发送给您,这样用户就不会在该屏幕上等待报告。

4

3 回答 3

0

一旦用户从 UI 提交请求,只需从您的控制器中输入数据库并向用户发送消息说“我们已收到您的请求,excel 将通过电子邮件发送给您”。

现在在后台有正在运行的作业,您可以使用 Thread 在服务器端编写此作业,或者更好地使用 Spring Batch。这项工作将做以下

1)这将是一个持续运行的线程,它将检查这个表中是否有来自 UI 的任何新条目,通过一些标志或者你可以找到它。

2)这个工作将生成excel文件和电子邮件给客户

3) 一旦文件通过电子邮件发送,在数据库中更新 flag = false,以便下次该作业将仅使用 flag = false 记录进行下一次处理。

于 2012-11-09T08:43:50.910 回答
0

创建一个 java 程序来填充您的 excel 工作表和其余的东西。然后在你的servlet中使用

Process p=Runtime.getRuntime().exec(/*run your java program */);

这将创建一个并行进程,您的 servlet 将结束

于 2012-11-09T08:44:11.130 回答
0

您可以使用带有@Async注释的 spring 执行异步任务。有关更多详细信息,您可以在 spring 中查看第25.5.2节。

于 2012-11-09T10:46:37.763 回答