我有一个 Java EE 应用程序,其中用户在许多页面上沿线性方向执行一系列操作。在第一页中,我有执行数据库查询所需的详细信息,其中最后一页需要结果。我不想让用户等待这个数据库查询在页面之间执行,而是我想在用户继续时在后台运行它。
这样做的最佳方法是什么?
我知道不鼓励在 Java EE 应用程序中使用线程。
我有一个 Java EE 应用程序,其中用户在许多页面上沿线性方向执行一系列操作。在第一页中,我有执行数据库查询所需的详细信息,其中最后一页需要结果。我不想让用户等待这个数据库查询在页面之间执行,而是我想在用户继续时在后台运行它。
这样做的最佳方法是什么?
我知道不鼓励在 Java EE 应用程序中使用线程。
您可以使用第一步中提供的数据来调用异步 EJB 或 Servlet 上的操作(尽管如果您使用 Java EE,您应该使用 EJB,因为它更适合这种工作)。
看这里:在 JavaEE 6 中执行子进程
您可以保存Future<?>
异步方法返回的对象,并在最后一页调用其get(-)
命令。您甚至可以在最后阶段阻止用户,因为您可能想向他展示结果而不是让他继续。
不鼓励在 J2EE 应用程序中管理线程,因为应用程序服务器不知道您的自定义线程,因此它无法管理附加到这些线程的资源。但有些应用服务器如WebSphere、WebLogic 支持使用线程。您可以使用 commonj 之类的框架来实现此目的。
你也应该看看这个选项。