1

这就是我需要的。我有一个用户界面,用户可以上传文件并根据输入(上传)的数据提取报告。由于要提取大量数据,一旦用户上传了数据,我希望从 servlet 控件中出来,这样用户就不必在同一页面中等待,并且将控件传递给 java通过使用户可以处理其他事情来实现独立程序。因此,一旦控件继续到 java 独立,它将调用后端 sps 并从中构建一个提取并将其放置在服务器上的文件路径中。

用户如何通过 UI 来检查提取是否已准备好供他们下载。

所以这里的问题是,实现相同目标的最佳实践或可能性是什么?请让我知道您的宝贵意见。

谢谢!

4

3 回答 3

2

如果您在 Java EE 环境中运行,我建议让 servlet 将任务分派到 JMS 队列并使用消息驱动的 bean进行(异步)处理。

正如其他人所建议的那样,让上传 servlet 将用户重定向到一些启用 ajax 的页面来轮询后端以完成作业是相当简单的。

如果您不在 EE 环境中,您可以创建一个独立(线程池)应用程序以从队列中使用并提供信号,例如。通过数据库(我假设结果无论如何都会进入数据库)。Spring 框架提供了非常强大和广泛的工具来将它们绑定在一起。

但实际上,有几个免费/开源的 EE 容器可用,从轻量级到企业级,因此无需自己构建必要的东西。

干杯,

于 2013-06-27T08:16:53.360 回答
0

如果您不能使用消息驱动的 bean,您可以让您的 servlet 将数据上传到文件系统上的某个位置,并在 DB 表中记录一行来说明有一个工作要处理。

然后你有你的独立程序轮询作业,处理数据并在完成时更新数据库行(包括失败的原因等)。

最后,您可以使用 ajax 请求从 UI 轮询作业的状态。

允许用户在执行其他操作时建立要处理的数据作业队列。

于 2013-06-27T08:45:33.807 回答
0

它很容易。

  • 在您的 servlet 类中有一个线程。

  • 运行线程(线程将提取数据等)。

  • 运行线程后将用户重定向到您具有自动刷新或显示已完成多少提取的页面。(您提到您有办法找到它)

于 2013-06-27T07:38:12.167 回答