[RESOLVIDO] Problema para usar Quartz com JPA

3 respostas
F

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.

3 Respostas

A

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.

Acredito que se você usar com Spring, você consegue injetar (via @Autowired ou algo assim).

[]'s

F

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();

D

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

Criado 3 de janeiro de 2012
Ultima resposta 18 de jan. de 2012
Respostas 3
Participantes 3