Bom dia,
Estou tendo o seguinte problema: preciso usar um entityManager dentro de um Job do Quartz.
Injetar com @PersistenceContext não funciona, pois o Job é instanciado pelo framework do Quartz e não pelo container.
Pesquisei bastante, mas não encontrei algum lugar que mostrasse como fazer isso.
Alguém tem alguma sugestão de como passar um entityManager para o meu Job? Talvez haja alguma solução com aquele JobDataMap ou algo do tipo, mas eu preciso de alguma forma de usar JPA dentro do Job.
Agradeço desde já qualquer ajuda.
[quote=fernando.camargo]Bom dia,
Estou tendo o seguinte problema: preciso usar um entityManager dentro de um Job do Quartz.
Injetar com @PersistenceContext não funciona, pois o Job é instanciado pelo framework do Quartz e não pelo container.
Pesquisei bastante, mas não encontrei algum lugar que mostrasse como fazer isso.
Alguém tem alguma sugestão de como passar um entityManager para o meu Job? Talvez haja alguma solução com aquele JobDataMap ou algo do tipo, mas eu preciso de alguma forma de usar JPA dentro do Job.
Agradeço desde já qualquer ajuda.[/quote]
Acredito que se você usar com Spring, você consegue injetar (via @Autowired ou algo assim).
[]'s
Estou usando EJB na minha aplicação.
Encontrei uma forma de resolver. Passei o EntityManagerFactory via JobDataMap e o recuperei no Job, criando o EntityManager através dele. Esse EntityManagerFactory eu peguei via @PersistenceUnit.
Segue o código, caso alguém tenha o mesmo problema:
EntityManagerFactory entityManagerFactory = (EntityManagerFactory) jobExecutionContext.getJobDetail().getJobDataMap().get("entityManagerFactory");
EntityManager entityManager = entityManagerFactory.createEntityManager();
uma dúvida fernando vc usou alguma anotação @stateless no job, porq é exatamente o msm problema que estou tendo, segui o que vc falou mas não esta encontrando
o @PersistenceUnit
no caso eu fiz assim
@PersistenceUnit(unitName="p-unit")
private EntityManagerFactory entityManagerFactory;
erro:
O método que é chamado ele só faz uma query por ser demorada achei melhor, fazer ela rodar de madrugada