延迟后的 Java EJB 调用方法

标签 java timer ejb delay

我有一个无状态 EJB,其方法应延迟调用不同的方法。 例如:

EJB 1

public void start()
{
   waitFor3Seconds();
   doSomething1();
   waitFor3Seconds();
   doSomething2();
   waitFor3Seconds();
   doSomething3();
}

如何实现 waitFor3Seconds() ? 我不想使用 Thread.sleep(),因为它会阻塞。

最佳答案

EJB 不应该在处理过程中等待,这对我来说是一个糟糕的设计。也许你应该考虑异步处理? (可能使用 MDB)。请抵制使用 Thread.sleep() 的诱惑,这是 restrictions 之一EJB 开发(强调我的):

Specifically, enterprise beans should not (...) create or manage threads.

另一种可能性是使用作业调度框架(例如 Quartz )来根据需要调度尽可能多的任务,将作业设置为在流程所需的时间一个接一个地开始。在您的示例中,需要三个作业:doSomething1()doSomething2()doSomething3(),配置为以所需的延迟开始.

关于延迟后的 Java EJB 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550516/

相关文章:

java - 如何使用for循环将与数字混合的字符串变量设置为 ""?

java - 如何使用 Java Mongo DB 驱动程序版本 3 将 BasicDBObject 转换为 Mongo 文档?

java - 在for循环中向arraylist添加对象,但for循环完成后arraylist为空?

c - 在ARM嵌入式C编程中使用定时器

java - 仅在 Java Web start 中在 Glassfish 服务器中查找 EJB Jndi

java - 为什么使用JNDI访问DNS/LDAP/EJB?

java - 是否可以使JavaFX中的ImageView响应?

java - Android CountDownTimer 作为一个单独的类

java - 计时器导致 Tomcat 服务器出现问题

jakarta-ee - 我是否还需要在 CDI bean 上使用 EJB @Clustered 来实现分布式应用程序