Я использую этот подход, чтобы иметь CDI с Quartz в Java EE:
public class CdiJobFactory implements JobFactory {
@Inject
private BeanManager beanManager;
@Override
public Job newJob(final TriggerFiredBundle bundle, final Scheduler scheduler) throws SchedulerException {
Class<? extends Job> jobClass = bundle.getJobDetail().getJobClass();
Set<Bean<?>> beans = beanManager.getBeans(jobClass);
if (beans.isEmpty()) {
throw new SchedulerException("No job instance found for job class: " + jobClass.getName());
}
Bean<?> bean = beanManager.getBeans(jobClass).iterator().next();
CreationalContext<?> ctx = beanManager.createCreationalContext(bean);
return (Job) beanManager.getReference(bean, jobClass, ctx);
}
}
Все работает нормально, но я получаю это сообщение об ошибке в server.log для всех заданий кварца ивсе бины, которые я вставляю в них (сообщение не записывается для EJB, введенного в кварцевые задания): [Payara 4.1] [SEVERE] No valid EE environment for injection of
.Задания выполняются успешно, они не выдают исключение, но меня беспокоит это сообщение об ошибке.Я пытался аннотировать задания с помощью @ApplicationScoped
или @Dependent
и т. Д., Но безрезультатно.Я развертываю на Payara Server 4.1.2.181 и использую Java EE 7.