在EJB计时器中使用@schedule,我想从数据库传递计划详细信息。但它不允许传递值。我该怎么办。在@timeout中,我也无法在服务器启动时自动启动线程。 @Postconstruct无效。
答案 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之外,这适用于我们的网站。