@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
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.