Используя @schedule в таймере EJB, не в состоянии передать детали расписания из базы данных

Используя @schedule в таймере EJB, я хочу передать детали расписания из базы данных. но это не позволяет передавать значения. Что я должен делать. В @timeout я также не могу автоматически запустить поток во время запуска сервера. @Postconstruct не работает.

1 ответ

Возможно, вам придется использовать @Timeout, @Singleton, @Startup и @ConcurrencyManagement

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

Введите TimerService для настройки

@Resource
private TimerService timerService;

Внедрить EntityManager для доступа к базе данных

@PersistenceUnit(..)
private EntityManager entityManager

Используйте @Timeout вместо @Schedule

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

Настройте таймер

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

кроме использования EntityManager, это работает на нашем сайте.

Другие вопросы по тегам