Hi Leo,

can you quickly check it on 1.7.2 before digging into 1.6.0 bugs? I know we
enhanced a bit this area (singleton) so can be fixed.


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com>

2015-09-28 12:16 GMT-07:00 Leonardo K. Shikida <[email protected]>:

> Hi
>
> I have a singleton that initialized my own scheduler.
>
> Please don't ask me why do I need another schedule, since TomEE already
> provides one by default. Actually, I need this because since the JavaEE
> spec is not clear about how the timers must be hadled when they're
> persistent, I had to do this. But anyway.
>
>
> @Startup
> @Singleton
> @DependsOn("SystemInitializerEJB")
> public class TimerEJB{
>
>     private Scheduler scheduler;
>
>     private static Logger log = Logger.getLogger(TimerEJB.class);
>
>     @PostConstruct
>     public void initialize() throws SchedulerException{
>         log.info("Initialize "+this);
>         StdSchedulerFactory factory = new StdSchedulerFactory();
>
>
> factory.initialize(this.getClass().getResourceAsStream("my.quartz.properties"));
>         scheduler = factory.getScheduler();
>         scheduler.start();
>         log.info("scheduler "+scheduler.getMetaData().getSchedulerName());
>     }
>
>
> SOMETIMES...
>
> it seems to be initialized twice, because I get this message
>
> INFO: Started Ejb(deployment-id=SystemInitializerEJB,
> ejb-name=SystemInitializerEJB, container=Default Singleton Container)
>
> 2015-09-28 17:40:02,806 INFO   [TimerEJB] Initialize
> com.company.software.tomee.timer.TimerEJB@4d8818cd
> 2015-09-28 17:40:02,807 INFO   [TimerEJB] Initialize
> com.company.software.tomee.timer.TimerEJB@7e2715a4 Sep 28, 2015 5:40:02 PM
> org.quartz.impl.StdSchedulerFactory instantiate
> INFO: Using default implementation for ThreadExecutor
> Sep 28, 2015 5:40:02 PM org.quartz.impl.StdSchedulerFactory instantiate
> INFO: Using default implementation for ThreadExecutor
> Sep 28, 2015 5:40:02 PM org.quartz.core.SchedulerSignalerImpl <init>
> INFO: Initialized Scheduler Signaller of type: class
> org.quartz.core.SchedulerSignalerImpl
> Sep 28, 2015 5:40:02 PM org.quartz.core.QuartzScheduler <init>
> INFO: Quartz Scheduler v.2.2.0 created.
> Sep 28, 2015 5:40:02 PM org.quartz.simpl.RAMJobStore initialize
> INFO: RAMJobStore initialized.
> Sep 28, 2015 5:40:02 PM org.quartz.core.QuartzScheduler initialize
> INFO: Scheduler meta-data: Quartz Scheduler (v2.2.0)
> 'MyClusteredScheduler2' with instanceId 'NON_CLUSTERED'
>   Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
>   NOT STARTED.
>   Currently in standby mode.
>   Number of jobs executed: 0
>   Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 30 threads.
>   Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support
> persistence. and is not clustered.
>
> Sep 28, 2015 5:40:02 PM org.quartz.impl.StdSchedulerFactory instantiate
> INFO: Quartz scheduler 'MyClusteredScheduler2' initialized from an
> externally opened InputStream.
> Sep 28, 2015 5:40:02 PM org.quartz.impl.StdSchedulerFactory instantiate
> INFO: Quartz scheduler version: 2.2.0
> Sep 28, 2015 5:40:02 PM org.quartz.core.QuartzScheduler start
> INFO: Scheduler MyClusteredScheduler2_$_NON_CLUSTERED started.
>
> 2015-09-28 17:40:02,847 INFO   [TimerEJB] scheduler MyClusteredScheduler2
> Sep 28, 2015 5:40:02 PM org.apache.openejb.assembler.classic.Assembler
> startEjbs
> INFO: Started Ejb(deployment-id=myTimerEJB, ejb-name=myTimerEJB,
> container=Default Singleton Container)
> Sep 28, 2015 5:40:02 PM org.quartz.core.SchedulerSignalerImpl <init>
> INFO: Initialized Scheduler Signaller of type: class
> org.quartz.core.SchedulerSignalerImpl
> Sep 28, 2015 5:40:02 PM org.quartz.core.QuartzScheduler <init>
> INFO: Quartz Scheduler v.2.2.0 created.
> Sep 28, 2015 5:40:02 PM org.quartz.simpl.RAMJobStore initialize
> INFO: RAMJobStore initialized.
> Sep 28, 2015 5:40:02 PM org.quartz.core.QuartzScheduler initialize
> INFO: Scheduler meta-data: Quartz Scheduler (v2.2.0)
> 'MyClusteredScheduler2' with instanceId 'NON_CLUSTERED'
>   Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
>   NOT STARTED.
>   Currently in standby mode.
>   Number of jobs executed: 0
>   Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 30 threads.
>   Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support
> persistence. and is not clustered.
>
> Sep 28, 2015 5:40:02 PM org.quartz.impl.StdSchedulerFactory instantiate
> INFO: Quartz scheduler 'MyClusteredScheduler2' initialized from an
> externally opened InputStream.
> Sep 28, 2015 5:40:02 PM org.quartz.impl.StdSchedulerFactory instantiate
> INFO: Quartz scheduler version: 2.2.0
> Sep 28, 2015 5:40:02 PM org.quartz.core.QuartzScheduler shutdown
> INFO: Scheduler MyClusteredScheduler2_$_NON_CLUSTERED shutting down.
> Sep 28, 2015 5:40:02 PM org.quartz.core.QuartzScheduler standby
> INFO: Scheduler MyClusteredScheduler2_$_NON_CLUSTERED paused.
> Sep 28, 2015 5:40:02 PM org.quartz.core.QuartzScheduler shutdown
> INFO: Scheduler MyClusteredScheduler2_$_NON_CLUSTERED shutdown complete.
> Sep 28, 2015 5:40:02 PM
> org.apache.openejb.core.transaction.EjbTransactionUtil
> handleSystemException
> SEVERE: EjbTransactionUtil.handleSystemException: Scheduler with name
> 'MyClusteredScheduler2' already exists.
> org.quartz.SchedulerException: Scheduler with name 'MyClusteredScheduler2'
> already exists.
>     at
> org.quartz.impl.SchedulerRepository.bind(SchedulerRepository.java:80)
>     at
>
> org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1352)
>     at
>
> org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1517)
>     at
> com.company.software.tomee.timer.TimerEJB.initialize(TimerEJB.java:71)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:606)
>     at
>
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
>     at
>
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$LifecycleInvocation.invoke(ReflectionInvocationContext.java:214)
>     at
>
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
>     at
>
> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
>     at
>
> org.apache.openejb.monitoring.StatsInterceptor.PostConstruct(StatsInterceptor.java:108)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:606)
>     at
>
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
>     at
>
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
>     at
>
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
>     at org.apache.openejb.BeanContext.newInstance(BeanContext.java:1565)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:175)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:116)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:114)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:125)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:91)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$400(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$Data.initialize(SingletonInstanceManager.java:367)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initializeDependencies(SingletonInstanceManager.java:166)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:173)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:116)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:114)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:125)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:91)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$400(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$Data.initialize(SingletonInstanceManager.java:367)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initializeDependencies(SingletonInstanceManager.java:166)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:173)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:116)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:114)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:125)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:91)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$400(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$Data.initialize(SingletonInstanceManager.java:367)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initializeDependencies(SingletonInstanceManager.java:166)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:173)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:116)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:114)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:125)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:91)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$400(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$Data.initialize(SingletonInstanceManager.java:367)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initializeDependencies(SingletonInstanceManager.java:166)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:173)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:116)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:114)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:125)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:91)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$400(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$Data.initialize(SingletonInstanceManager.java:367)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initializeDependencies(SingletonInstanceManager.java:166)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:173)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:116)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:114)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:125)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:91)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$400(SingletonInstanceManager.java:67)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$Data.initialize(SingletonInstanceManager.java:367)
> (...)
>
> I can understand it seems to be like some dependency cycle, but I need to
> know why it does not happen all the time and how to avoid this sort of
> thing, because it really breaks the app.
>
> Any help is welcome. thanks
>
>
> []
>
> Leo
>

Reply via email to