-1

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

4

1 回答 1

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 的使用,这在我们的网站上有效。

于 2017-07-14T09:35:23.193 回答