@Inject não funciona

Senhores,

Estou colocando o Quartz Framework na minha aplicação. Ele, aparentemente, está funcionando corretamente. Quanto inicio o servidor, o meu Listener (declarado no web.xml) é lido e o job é inicializado no horário que informei.

O problema é que, dentro do meu job, tenho um @Inject responsável por “instanciar” um DAO, pois preciso fazer acesso ao BD. E esse DAO está sempre nulo.

Vou colocar o código do meu Job…

public class EmailContasAPagarJob implements Serializable, Job {
private static final long serialVersionUID = 1L;

@Inject
private EscritorioDao escritorioDao;

@Inject
private ContasAPagarDao aPagarDao;

public EmailContasAPagarJob() {
// TODO Auto-generated constructor stub
}

public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println(“Entrei no Job…”);
List vencendoHoje;

  List<ContasAPagar> vencidas;
  
  List<ContasAPagar> proximosVencimentos;
  Date hoje = new Date();
  
  ContasAPagar pesq = new ContasAPagar();
  pesq.setDataInicio(hoje);
  pesq.setDataFim(hoje);
  
  List<Escritorio> empresas = escritorioDao.listarTodosOrdenadoPorNome();

Na linha List empresas = escritorioDao.listarTodosOrdenadoPorNome();, o escritorioDAO está nulo. Alguém pode ajudar?

Se vc instanciar na mão vai ?
Seu dao é um objeto simples ou complexo ?

Não… Já tentei instanciar e nada acontece,
O que é um obj simples e obj complexo?

Então o problema não é com inject, se vc ta instanciando não e mesmo assim não vai.
O problema tá no seu dao.
Se está trabalhando com inject já deveria saber, enfim

Acho que não soube me expressar.
O DAO definitivamente é instanciado. Acho que, qualquer classe é instanciada quando fazemos manualmente, ou não???
O que quis dizer é que ela não funciona, pois ocorre um nullPointerException quando tento chamar o método.

escritorioDao.listarTodos();
O escritorioDao está instanciado (com o New) mas o retorno do método dá NullPointer.

O Dao está perfeito, funcionando em diversos pontos da aplicação e com injeção.

Minha dúvida está no Quartz, no modo com que ele invoca essas classes, principalemente o Listener. Acho que tem dedo dele nessa história.

escritorioDao é null ou o nullpointer está ocorrendo dentro do método listarTodos()?

Voce disse " o escritorioDAO está nulo", e agora “mas o retorno do método dá NullPointer” são coisas diferentes, coloca o stack trace, e ve em qual linha ele acusa o nullpointer.
E falta postar o método listarTodosOrdenadoPorNome();

o @Inject precisa de alguma implementação para a injeção. O que voce está usando de IoC (Inversion of Control)? Spring? CDI?

Seu DAO precisa estar anotado com alguma coisa (@Component, @EJB) pra saber que a classe é injetável.

Pessoal, consegui.

Estou usando CDI, anotação @Inject.
Conforme desconfiava, o problema estava na invocação do método no Job. O porquê, eu não sei.
Eu injetei o Dao na Scheduler e enviei por parâmetro para o Job e deu certo.
Acho que isso acontecia devido a instância de Job ser criada pelo Scheduller via reflection. Deve ter dado algum problema de clico de vida, sei lá…

Obrigado a todos pela ajuda.

Amigo boa tarde,
Estou com o mesmo problema.
Pode postar sua soluçao?