quarkus: EntityManager doesn't work for quarkus scheduler

@ApplicationScoped
public class Scheduler {

  @Inject
  EntityManager entityManager;

  @Scheduled(every = "10s")
  void run() {
    Company company = entityManager.find(Company.class, 1);
    System.out.println(company);
  }
}
ERROR [org.qua.cor.JobRunShell] (DefaultQuartzScheduler_Worker-1) Job io.quarkus.scheduler.Scheduler.1_com.gateweb.transsexual.Scheduler_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de threw an unhandled Exception: : javax.enterprise.context.ContextNotActiveException: interface javax.enterprise.context.RequestScoped
       at io.quarkus.hibernate.orm.runtime.RequestScopedEntityManagerHolder_ClientProxy.delegate(Unknown Source)
       at io.quarkus.hibernate.orm.runtime.RequestScopedEntityManagerHolder_ClientProxy.getOrCreateEntityManager(Unknown Source)
       at io.quarkus.hibernate.orm.runtime.entitymanager.TransactionScopedEntityManager.getEntityManager(TransactionScopedEntityManager.java:91)
       at io.quarkus.hibernate.orm.runtime.entitymanager.TransactionScopedEntityManager.find(TransactionScopedEntityManager.java:135)
       at io.quarkus.hibernate.orm.runtime.entitymanager.ForwardingEntityManager.find(ForwardingEntityManager.java:58)
       at com.gateweb.transsexual.Scheduler.run(Scheduler.java:18)
       at com.gateweb.transsexual.Scheduler_ClientProxy.run(Unknown Source)
       at com.gateweb.transsexual.Scheduler_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de.invoke(Unknown Source)
       at io.quarkus.scheduler.runtime.QuartzScheduler$InvokerJob.execute(QuartzScheduler.java:264)
       at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
       at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
 ERROR [org.qua.cor.ErrorLogger] (DefaultQuartzScheduler_Worker-1) Job (io.quarkus.scheduler.Scheduler.1_com.gateweb.transsexual.Scheduler_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de threw an exception.: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: javax.enterprise.context.ContextNotActiveException: interface javax.enterprise.context.RequestScoped]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: javax.enterprise.context.ContextNotActiveException: interface javax.enterprise.context.RequestScoped
        at io.quarkus.hibernate.orm.runtime.RequestScopedEntityManagerHolder_ClientProxy.delegate(Unknown Source)
        at io.quarkus.hibernate.orm.runtime.RequestScopedEntityManagerHolder_ClientProxy.getOrCreateEntityManager(Unknown Source)
        at io.quarkus.hibernate.orm.runtime.entitymanager.TransactionScopedEntityManager.getEntityManager(TransactionScopedEntityManager.java:91)
        at io.quarkus.hibernate.orm.runtime.entitymanager.TransactionScopedEntityManager.find(TransactionScopedEntityManager.java:135)
        at io.quarkus.hibernate.orm.runtime.entitymanager.ForwardingEntityManager.find(ForwardingEntityManager.java:58)
        at com.gateweb.transsexual.Scheduler.run(Scheduler.java:18)
        at com.gateweb.transsexual.Scheduler_ClientProxy.run(Unknown Source)
        at com.gateweb.transsexual.Scheduler_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de.invoke(Unknown Source)
        at io.quarkus.scheduler.runtime.QuartzScheduler$InvokerJob.execute(QuartzScheduler.java:264)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        ... 1 more

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 24 (14 by maintainers)

Commits related to this issue

Most upvoted comments

Ah, I can see the problem now - we only add the scope annotation automatically if the job “requires container services” - which is currently interpreted as “has @Inject, @PostConstruct or @PreDestroy”. I think that we could easily improve this to also contain all interceptor bindings (and possibly qualifiers).

In any case, a scope annotation does never hurt 😉.

Sure, as soon as I’m done I’ll post it here.