在 JSF 中单击按钮异步调用长时间运行的进程

why*_*ake 4 jsf asynchronous long-running-processes jakarta-ee

我想通过单击在 JSF 和 Java 中开发的按钮来执行存储过程。proc 执行大约需要 30 分钟。

当用户单击此按钮时,他/她应该会收到一条默认消息,例如 -

正在处理数据。请在 60 分钟后登录以查看数据。

现在,当我们单击按钮时,UI 页面会在 proc 执行期间挂起。

是否有解决方法来显示此默认消息并在后端运行 proc?

Bal*_*usC 6

只需触发一个@AsynchronousEJB 方法。它会触发并忘记一个单独的线程,bean 操作方法将立即返回。

@Named
public class Bean {

    @EJB
    private Service service;

    public void submit() {
        service.asyncDoSomething();

        // Add message here.
    }

}
Run Code Online (Sandbox Code Playgroud)
@Stateless
public class Service {

    @Asynchronous
    public void asyncDoSomething() {
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)

也可以看看: