Boa tarde, Gostaria de saber como posso fazer o CDI gerenciar um job do Quartz.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa tarde, Gostaria de saber como posso fazer o CDI gerenciar um job do Quartz.
Fala aí Avelino, blz?
O que você quer dizer com "gerenciar um job do Quartz"?
Quartz Job Scheduling Library (http://www.quartz-scheduler.org/)
Para que o CDI funcione, ele precisa gerenciar toda a cadeia de criação dos Beans para que possa injetar as instâncias corretas nos beans. Mas quando criamos um Job no Quarz usando JobBuilder.newJob(MyJob).build()o JobBuilder está criando instâncias de trabalho que o CDI não sabe nada sobre e, portanto, nunca tem a chance de injetar um DAO ou um Serviço.
Então, como podemos dizer ao agendador Quarz que ele não deve criar a instância do bean em si, mas, delegar a criação da instância do bean para o CDI?
No momento. Para contornar o problema. Estou recuperando os DAO ou Serviços com:
initialContext = new InitialContext();
bean = (BeanManager) initialContext.lookup("java:comp/env/BeanManager");
Não conheço muito do Quartz, mas uma solução seria você produzir os jobs via @Produces.
E com isso você pode injetar os jobs em outras classes ou criar um Job e injetar nele alguma coisa do seu projeto.