在 EJB 计时器中使用 @schedule,我想从数据库中传递计划详细信息。但它不允许传递值。我应该怎么办。在@timeout 中,我也无法在服务器启动时自动启动线程。@Postconstruct 不工作。
问问题
70 次
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 回答