在EJB计时器中使用@schedule,无法从数据库传递计划详细信息

时间:2017-07-14 07:48:37

标签: ejb ejb-timer

在EJB计时器中使用@schedule,我想从数据库传递计划详细信息。但它不允许传递值。我该怎么办。在@timeout中,我也无法在服务器启动时自动启动线程。 @Postconstruct无效。

1 个答案:

答案 0 :(得分:0)

您可能必须使用@ Timeout,@ Singleton,@ Startup和@ConcurrencyManagement

@Singleton(name = "...", mappedName = "")
@Startup
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)  // this is threadsafe!!!
public class .......

注入TimerService以进行配置

@Resource
private TimerService timerService;

为db-access注入EntityManager

@PersistenceUnit(..)
private EntityManager entityManager

使用@Timeout而不是@Schedule

@Timeout
void timer() { .... }

配置计时器

@PostConstruct
void postConstruct() {
   entityManager.createQuery(....);
   .
   .
   timerService.createIntervalTimer(....);
}

除了使用EntityManager之外,这适用于我们的网站。