You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by "Leonardo K. Shikida" <sh...@gmail.com> on 2015/10/23 16:09:55 UTC

Re: singleton initializing twice? (1.6.0-stable)

well, with 1.7.2 I get a different error message.

SEVERE: EjbTransactionUtil.handleSystemException: Thread count must be > 0
org.apache.openejb.quartz.SchedulerConfigException: Thread count must be > 0
    at
org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)

here's what I am trying (sorry, no github here)

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Singleton;
import javax.ejb.Startup;

import org.apache.openejb.quartz.Scheduler;
import org.apache.openejb.quartz.SchedulerException;
import org.apache.openejb.quartz.impl.StdSchedulerFactory;

@Startup
@Singleton
public class CustomTimer {
        private Scheduler scheduler;

        @PostConstruct
        public void initialize() throws SchedulerException{
            System.out.println("Initialize "+this);
            StdSchedulerFactory factory = new StdSchedulerFactory();

factory.initialize(this.getClass().getResourceAsStream("my.quartz.properties"));
            scheduler = factory.getScheduler();
            scheduler.start();
            System.out.println("scheduler
"+scheduler.getMetaData().getSchedulerName());
        }

        @PreDestroy
        public void stop() {
            try {
                System.out.println("scheduler stopping");
                scheduler.shutdown();
                System.out.println("scheduler stopped");
            } catch (SchedulerException e) {
                e.printStackTrace();
            }
        }

}

import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;

@Singleton
@Startup
@Lock(LockType.READ)
public class DefaultTimer {

    @Schedule(second = "0", minute = "*", hour = "*", info = "defaultTimer")
    public void periodic() {
        System.out.println("running periodic timer");
    }
}

my.quartz.properties
#============================================================================
# Configure Main Scheduler Properties
#============================================================================

org.quartz.scheduler.instanceName = MyClusteredScheduler2
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5

application.properties (tomee conf)

#============================================================================
# Configure Main Scheduler Properties
#============================================================================

org.quartz.scheduler.instanceName = myScheduler
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5


I am not sure if I am using some wrong quartz key in the properties file.
This kind of thing seems to work in 1.6.0, before the quartz packages
refactoring in tomee.

Complete stacktrace below

Initialize CustomTimer@161485de
Oct 23, 2015 12:04:33 PM org.apache.openejb.quartz.impl.StdSchedulerFactory
instantiate
INFO: Using default implementation for ThreadExecutor
Oct 23, 2015 12:04:33 PM
org.apache.openejb.core.transaction.EjbTransactionUtil handleSystemException
SEVERE: EjbTransactionUtil.handleSystemException: Thread count must be > 0
org.apache.openejb.quartz.SchedulerConfigException: Thread count must be > 0
    at
org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
    at
org.apache.openejb.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1288)
    at
org.apache.openejb.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1519)
    at CustomTimer.initialize(CustomTimer.java:24)
    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:192)
    at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$LifecycleInvocation.invoke(ReflectionInvocationContext.java:223)
    at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
    at
org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
    at
org.apache.openejb.monitoring.StatsInterceptor.PostConstruct(StatsInterceptor.java:109)
    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:192)
    at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
    at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
    at org.apache.openejb.BeanContext.newInstance(BeanContext.java:1590)
    at
org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:179)
    at
org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:69)
    at
org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:120)
    at
org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:118)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at
org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:129)
    at
org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:93)
    at
org.apache.openejb.core.singleton.SingletonInstanceManager.start(SingletonInstanceManager.java:84)
    at
org.apache.openejb.core.singleton.SingletonContainer.start(SingletonContainer.java:125)
    at
org.apache.openejb.assembler.classic.Assembler.startEjbs(Assembler.java:1382)
    at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:878)
    at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:652)
    at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1261)
    at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1100)
    at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
    at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)


[]

Leo

On Mon, Sep 28, 2015 at 5:43 PM, Howard W. Smith, Jr. <
smithh032772@gmail.com> wrote:

> My apologies, I did not see that behavior.
>
> On Mon, Sep 28, 2015 at 4:15 PM, Howard W. Smith, Jr. <
> smithh032772@gmail.com> wrote:
>
> >
> >
> > On Mon, Sep 28, 2015 at 3:55 PM, Romain Manni-Bucau <
> rmannibucau@gmail.com
> > > wrote:
> >
> >> got it but knowing 1.7.2 has the same issue helps to identify if we need
> >> to
> >> solve an unidentified issue or a fixed issue with potentially a
> >> workwround.
> >>
> >>
> > hmmm, i've been using tomee 1.7.2 (in production) ever since June 2015,
> > and I think I saw this behavior, too, recently (once or twice). Let me
> > check my log files and confirm.
> >
> >
> What I saw was my app attempting to send multiple emails via my JavaMail
> POJO, invoked by some non-JMS code and immediately after via some JMS/MDB
> code, initializing twice,
>
> Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> mailSession
> Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> mailSession
>
> and then initialized,
>
> Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> mailSession
> Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> mailSession
>

Re: singleton initializing twice? (1.6.0-stable)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
dont think so, using a scheduler factory you dont have this issue. But
doing it yourself you dont benefit from tomee defaults (values) so you have
to set it and with the right names. TomEE uses a shade with classes
relocation so config prefix changed compared to native quartz properties.



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-10-23 18:19 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:

> let me guess then
>
> tomee uses quartz and if I want to use the same library that comes bundled
> with tomee for a 2nd scheduler, it hit some configuration singleton because
> quartz did this way?
>
> []
>
> Leo
>
> On Fri, Oct 23, 2015 at 2:13 PM, Romain Manni-Bucau <rmannibucau@gmail.com
> >
> wrote:
>
> > yep just depends the defaults of the impl you use.
> >
> >
> > 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-10-23 18:09 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:
> >
> > > notice that if I just comment CustomTimer.initialize(), tomee starts
> > > normally, even using the old prefixes
> > >
> > > []
> > >
> > > Leo
> > >
> > > On Fri, Oct 23, 2015 at 12:15 PM, Romain Manni-Bucau <
> > > rmannibucau@gmail.com>
> > > wrote:
> > >
> > > > can be a side effect of org.quartz relocation in
> > > org.apache.openejb.quartz
> > > > (config prefix changed as well). We limit the config side effects in
> > our
> > > > code but since you do it yourself you see it.
> > > >
> > > >
> > > > 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-10-23 16:09 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:
> > > >
> > > > > well, with 1.7.2 I get a different error message.
> > > > >
> > > > > SEVERE: EjbTransactionUtil.handleSystemException: Thread count must
> > be
> > > >
> > > > 0
> > > > > org.apache.openejb.quartz.SchedulerConfigException: Thread count
> must
> > > be
> > > > >
> > > > > 0
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
> > > > >
> > > > > here's what I am trying (sorry, no github here)
> > > > >
> > > > > import javax.annotation.PostConstruct;
> > > > > import javax.annotation.PreDestroy;
> > > > > import javax.ejb.Singleton;
> > > > > import javax.ejb.Startup;
> > > > >
> > > > > import org.apache.openejb.quartz.Scheduler;
> > > > > import org.apache.openejb.quartz.SchedulerException;
> > > > > import org.apache.openejb.quartz.impl.StdSchedulerFactory;
> > > > >
> > > > > @Startup
> > > > > @Singleton
> > > > > public class CustomTimer {
> > > > >         private Scheduler scheduler;
> > > > >
> > > > >         @PostConstruct
> > > > >         public void initialize() throws SchedulerException{
> > > > >             System.out.println("Initialize "+this);
> > > > >             StdSchedulerFactory factory = new
> StdSchedulerFactory();
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
> factory.initialize(this.getClass().getResourceAsStream("my.quartz.properties"));
> > > > >             scheduler = factory.getScheduler();
> > > > >             scheduler.start();
> > > > >             System.out.println("scheduler
> > > > > "+scheduler.getMetaData().getSchedulerName());
> > > > >         }
> > > > >
> > > > >         @PreDestroy
> > > > >         public void stop() {
> > > > >             try {
> > > > >                 System.out.println("scheduler stopping");
> > > > >                 scheduler.shutdown();
> > > > >                 System.out.println("scheduler stopped");
> > > > >             } catch (SchedulerException e) {
> > > > >                 e.printStackTrace();
> > > > >             }
> > > > >         }
> > > > >
> > > > > }
> > > > >
> > > > > import javax.ejb.Lock;
> > > > > import javax.ejb.LockType;
> > > > > import javax.ejb.Schedule;
> > > > > import javax.ejb.Singleton;
> > > > > import javax.ejb.Startup;
> > > > >
> > > > > @Singleton
> > > > > @Startup
> > > > > @Lock(LockType.READ)
> > > > > public class DefaultTimer {
> > > > >
> > > > >     @Schedule(second = "0", minute = "*", hour = "*", info =
> > > > > "defaultTimer")
> > > > >     public void periodic() {
> > > > >         System.out.println("running periodic timer");
> > > > >     }
> > > > > }
> > > > >
> > > > > my.quartz.properties
> > > > >
> > > > >
> > > >
> > >
> >
> #============================================================================
> > > > > # Configure Main Scheduler Properties
> > > > >
> > > > >
> > > >
> > >
> >
> #============================================================================
> > > > >
> > > > > org.quartz.scheduler.instanceName = MyClusteredScheduler2
> > > > > org.quartz.scheduler.instanceId = AUTO
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
> #============================================================================
> > > > > # Configure ThreadPool
> > > > >
> > > > >
> > > >
> > >
> >
> #============================================================================
> > > > >
> > > > > org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> > > > > org.quartz.threadPool.threadCount = 10
> > > > > org.quartz.threadPool.threadPriority = 5
> > > > >
> > > > > application.properties (tomee conf)
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
> #============================================================================
> > > > > # Configure Main Scheduler Properties
> > > > >
> > > > >
> > > >
> > >
> >
> #============================================================================
> > > > >
> > > > > org.quartz.scheduler.instanceName = myScheduler
> > > > > org.quartz.scheduler.instanceId = AUTO
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
> #============================================================================
> > > > > # Configure ThreadPool
> > > > >
> > > > >
> > > >
> > >
> >
> #============================================================================
> > > > >
> > > > > org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> > > > > org.quartz.threadPool.threadCount = 10
> > > > > org.quartz.threadPool.threadPriority = 5
> > > > >
> > > > >
> > > > > I am not sure if I am using some wrong quartz key in the properties
> > > file.
> > > > > This kind of thing seems to work in 1.6.0, before the quartz
> packages
> > > > > refactoring in tomee.
> > > > >
> > > > > Complete stacktrace below
> > > > >
> > > > > Initialize CustomTimer@161485de
> > > > > Oct 23, 2015 12:04:33 PM
> > > > org.apache.openejb.quartz.impl.StdSchedulerFactory
> > > > > instantiate
> > > > > INFO: Using default implementation for ThreadExecutor
> > > > > Oct 23, 2015 12:04:33 PM
> > > > > org.apache.openejb.core.transaction.EjbTransactionUtil
> > > > > handleSystemException
> > > > > SEVERE: EjbTransactionUtil.handleSystemException: Thread count must
> > be
> > > >
> > > > 0
> > > > > org.apache.openejb.quartz.SchedulerConfigException: Thread count
> must
> > > be
> > > > >
> > > > > 0
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1288)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1519)
> > > > >     at CustomTimer.initialize(CustomTimer.java:24)
> > > > >     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:192)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$LifecycleInvocation.invoke(ReflectionInvocationContext.java:223)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.monitoring.StatsInterceptor.PostConstruct(StatsInterceptor.java:109)
> > > > >     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:192)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
> > > > >     at
> > > org.apache.openejb.BeanContext.newInstance(BeanContext.java:1590)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:179)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:69)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:120)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:118)
> > > > >     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:129)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:93)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.start(SingletonInstanceManager.java:84)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonContainer.start(SingletonContainer.java:125)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.startEjbs(Assembler.java:1382)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:878)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:652)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1261)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1100)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416)
> > > > >     at
> > > > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
> > > > >     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > > > >     at
> > > > >
> > > > >
> > > >
> > >
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > > > >     at java.lang.Thread.run(Thread.java:745)
> > > > >
> > > > >
> > > > > []
> > > > >
> > > > > Leo
> > > > >
> > > > > On Mon, Sep 28, 2015 at 5:43 PM, Howard W. Smith, Jr. <
> > > > > smithh032772@gmail.com> wrote:
> > > > >
> > > > > > My apologies, I did not see that behavior.
> > > > > >
> > > > > > On Mon, Sep 28, 2015 at 4:15 PM, Howard W. Smith, Jr. <
> > > > > > smithh032772@gmail.com> wrote:
> > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Mon, Sep 28, 2015 at 3:55 PM, Romain Manni-Bucau <
> > > > > > rmannibucau@gmail.com
> > > > > > > > wrote:
> > > > > > >
> > > > > > >> got it but knowing 1.7.2 has the same issue helps to identify
> if
> > > we
> > > > > need
> > > > > > >> to
> > > > > > >> solve an unidentified issue or a fixed issue with potentially
> a
> > > > > > >> workwround.
> > > > > > >>
> > > > > > >>
> > > > > > > hmmm, i've been using tomee 1.7.2 (in production) ever since
> June
> > > > 2015,
> > > > > > > and I think I saw this behavior, too, recently (once or twice).
> > Let
> > > > me
> > > > > > > check my log files and confirm.
> > > > > > >
> > > > > > >
> > > > > > What I saw was my app attempting to send multiple emails via my
> > > > JavaMail
> > > > > > POJO, invoked by some non-JMS code and immediately after via some
> > > > JMS/MDB
> > > > > > code, initializing twice,
> > > > > >
> > > > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > > > INFO: JavaMail.initMailSession(): initializing DEFAULT instance
> of
> > > > > > mailSession
> > > > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > > > INFO: JavaMail.initMailSession(): initializing DEFAULT instance
> of
> > > > > > mailSession
> > > > > >
> > > > > > and then initialized,
> > > > > >
> > > > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > > > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > > > > > mailSession
> > > > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > > > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > > > > > mailSession
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: singleton initializing twice? (1.6.0-stable)

Posted by "Leonardo K. Shikida" <sh...@gmail.com>.
let me guess then

tomee uses quartz and if I want to use the same library that comes bundled
with tomee for a 2nd scheduler, it hit some configuration singleton because
quartz did this way?

[]

Leo

On Fri, Oct 23, 2015 at 2:13 PM, Romain Manni-Bucau <rm...@gmail.com>
wrote:

> yep just depends the defaults of the impl you use.
>
>
> 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-10-23 18:09 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:
>
> > notice that if I just comment CustomTimer.initialize(), tomee starts
> > normally, even using the old prefixes
> >
> > []
> >
> > Leo
> >
> > On Fri, Oct 23, 2015 at 12:15 PM, Romain Manni-Bucau <
> > rmannibucau@gmail.com>
> > wrote:
> >
> > > can be a side effect of org.quartz relocation in
> > org.apache.openejb.quartz
> > > (config prefix changed as well). We limit the config side effects in
> our
> > > code but since you do it yourself you see it.
> > >
> > >
> > > 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-10-23 16:09 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:
> > >
> > > > well, with 1.7.2 I get a different error message.
> > > >
> > > > SEVERE: EjbTransactionUtil.handleSystemException: Thread count must
> be
> > >
> > > 0
> > > > org.apache.openejb.quartz.SchedulerConfigException: Thread count must
> > be
> > > >
> > > > 0
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
> > > >
> > > > here's what I am trying (sorry, no github here)
> > > >
> > > > import javax.annotation.PostConstruct;
> > > > import javax.annotation.PreDestroy;
> > > > import javax.ejb.Singleton;
> > > > import javax.ejb.Startup;
> > > >
> > > > import org.apache.openejb.quartz.Scheduler;
> > > > import org.apache.openejb.quartz.SchedulerException;
> > > > import org.apache.openejb.quartz.impl.StdSchedulerFactory;
> > > >
> > > > @Startup
> > > > @Singleton
> > > > public class CustomTimer {
> > > >         private Scheduler scheduler;
> > > >
> > > >         @PostConstruct
> > > >         public void initialize() throws SchedulerException{
> > > >             System.out.println("Initialize "+this);
> > > >             StdSchedulerFactory factory = new StdSchedulerFactory();
> > > >
> > > >
> > > >
> > >
> >
> factory.initialize(this.getClass().getResourceAsStream("my.quartz.properties"));
> > > >             scheduler = factory.getScheduler();
> > > >             scheduler.start();
> > > >             System.out.println("scheduler
> > > > "+scheduler.getMetaData().getSchedulerName());
> > > >         }
> > > >
> > > >         @PreDestroy
> > > >         public void stop() {
> > > >             try {
> > > >                 System.out.println("scheduler stopping");
> > > >                 scheduler.shutdown();
> > > >                 System.out.println("scheduler stopped");
> > > >             } catch (SchedulerException e) {
> > > >                 e.printStackTrace();
> > > >             }
> > > >         }
> > > >
> > > > }
> > > >
> > > > import javax.ejb.Lock;
> > > > import javax.ejb.LockType;
> > > > import javax.ejb.Schedule;
> > > > import javax.ejb.Singleton;
> > > > import javax.ejb.Startup;
> > > >
> > > > @Singleton
> > > > @Startup
> > > > @Lock(LockType.READ)
> > > > public class DefaultTimer {
> > > >
> > > >     @Schedule(second = "0", minute = "*", hour = "*", info =
> > > > "defaultTimer")
> > > >     public void periodic() {
> > > >         System.out.println("running periodic timer");
> > > >     }
> > > > }
> > > >
> > > > my.quartz.properties
> > > >
> > > >
> > >
> >
> #============================================================================
> > > > # Configure Main Scheduler Properties
> > > >
> > > >
> > >
> >
> #============================================================================
> > > >
> > > > org.quartz.scheduler.instanceName = MyClusteredScheduler2
> > > > org.quartz.scheduler.instanceId = AUTO
> > > >
> > > >
> > > >
> > >
> >
> #============================================================================
> > > > # Configure ThreadPool
> > > >
> > > >
> > >
> >
> #============================================================================
> > > >
> > > > org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> > > > org.quartz.threadPool.threadCount = 10
> > > > org.quartz.threadPool.threadPriority = 5
> > > >
> > > > application.properties (tomee conf)
> > > >
> > > >
> > > >
> > >
> >
> #============================================================================
> > > > # Configure Main Scheduler Properties
> > > >
> > > >
> > >
> >
> #============================================================================
> > > >
> > > > org.quartz.scheduler.instanceName = myScheduler
> > > > org.quartz.scheduler.instanceId = AUTO
> > > >
> > > >
> > > >
> > >
> >
> #============================================================================
> > > > # Configure ThreadPool
> > > >
> > > >
> > >
> >
> #============================================================================
> > > >
> > > > org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> > > > org.quartz.threadPool.threadCount = 10
> > > > org.quartz.threadPool.threadPriority = 5
> > > >
> > > >
> > > > I am not sure if I am using some wrong quartz key in the properties
> > file.
> > > > This kind of thing seems to work in 1.6.0, before the quartz packages
> > > > refactoring in tomee.
> > > >
> > > > Complete stacktrace below
> > > >
> > > > Initialize CustomTimer@161485de
> > > > Oct 23, 2015 12:04:33 PM
> > > org.apache.openejb.quartz.impl.StdSchedulerFactory
> > > > instantiate
> > > > INFO: Using default implementation for ThreadExecutor
> > > > Oct 23, 2015 12:04:33 PM
> > > > org.apache.openejb.core.transaction.EjbTransactionUtil
> > > > handleSystemException
> > > > SEVERE: EjbTransactionUtil.handleSystemException: Thread count must
> be
> > >
> > > 0
> > > > org.apache.openejb.quartz.SchedulerConfigException: Thread count must
> > be
> > > >
> > > > 0
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1288)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1519)
> > > >     at CustomTimer.initialize(CustomTimer.java:24)
> > > >     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:192)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$LifecycleInvocation.invoke(ReflectionInvocationContext.java:223)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.monitoring.StatsInterceptor.PostConstruct(StatsInterceptor.java:109)
> > > >     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:192)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
> > > >     at
> > org.apache.openejb.BeanContext.newInstance(BeanContext.java:1590)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:179)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:69)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:120)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:118)
> > > >     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:129)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:93)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.start(SingletonInstanceManager.java:84)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonContainer.start(SingletonContainer.java:125)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.startEjbs(Assembler.java:1382)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:878)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:652)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1261)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1100)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416)
> > > >     at
> > > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
> > > >     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> > > >     at
> > > >
> > > >
> > >
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > > >     at
> > > >
> > > >
> > >
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > > >     at java.lang.Thread.run(Thread.java:745)
> > > >
> > > >
> > > > []
> > > >
> > > > Leo
> > > >
> > > > On Mon, Sep 28, 2015 at 5:43 PM, Howard W. Smith, Jr. <
> > > > smithh032772@gmail.com> wrote:
> > > >
> > > > > My apologies, I did not see that behavior.
> > > > >
> > > > > On Mon, Sep 28, 2015 at 4:15 PM, Howard W. Smith, Jr. <
> > > > > smithh032772@gmail.com> wrote:
> > > > >
> > > > > >
> > > > > >
> > > > > > On Mon, Sep 28, 2015 at 3:55 PM, Romain Manni-Bucau <
> > > > > rmannibucau@gmail.com
> > > > > > > wrote:
> > > > > >
> > > > > >> got it but knowing 1.7.2 has the same issue helps to identify if
> > we
> > > > need
> > > > > >> to
> > > > > >> solve an unidentified issue or a fixed issue with potentially a
> > > > > >> workwround.
> > > > > >>
> > > > > >>
> > > > > > hmmm, i've been using tomee 1.7.2 (in production) ever since June
> > > 2015,
> > > > > > and I think I saw this behavior, too, recently (once or twice).
> Let
> > > me
> > > > > > check my log files and confirm.
> > > > > >
> > > > > >
> > > > > What I saw was my app attempting to send multiple emails via my
> > > JavaMail
> > > > > POJO, invoked by some non-JMS code and immediately after via some
> > > JMS/MDB
> > > > > code, initializing twice,
> > > > >
> > > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > > INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> > > > > mailSession
> > > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > > INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> > > > > mailSession
> > > > >
> > > > > and then initialized,
> > > > >
> > > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > > > > mailSession
> > > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > > > > mailSession
> > > > >
> > > >
> > >
> >
>

Re: singleton initializing twice? (1.6.0-stable)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
yep just depends the defaults of the impl you use.


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-10-23 18:09 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:

> notice that if I just comment CustomTimer.initialize(), tomee starts
> normally, even using the old prefixes
>
> []
>
> Leo
>
> On Fri, Oct 23, 2015 at 12:15 PM, Romain Manni-Bucau <
> rmannibucau@gmail.com>
> wrote:
>
> > can be a side effect of org.quartz relocation in
> org.apache.openejb.quartz
> > (config prefix changed as well). We limit the config side effects in our
> > code but since you do it yourself you see it.
> >
> >
> > 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-10-23 16:09 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:
> >
> > > well, with 1.7.2 I get a different error message.
> > >
> > > SEVERE: EjbTransactionUtil.handleSystemException: Thread count must be
> >
> > 0
> > > org.apache.openejb.quartz.SchedulerConfigException: Thread count must
> be
> > >
> > > 0
> > >     at
> > >
> > >
> >
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
> > >
> > > here's what I am trying (sorry, no github here)
> > >
> > > import javax.annotation.PostConstruct;
> > > import javax.annotation.PreDestroy;
> > > import javax.ejb.Singleton;
> > > import javax.ejb.Startup;
> > >
> > > import org.apache.openejb.quartz.Scheduler;
> > > import org.apache.openejb.quartz.SchedulerException;
> > > import org.apache.openejb.quartz.impl.StdSchedulerFactory;
> > >
> > > @Startup
> > > @Singleton
> > > public class CustomTimer {
> > >         private Scheduler scheduler;
> > >
> > >         @PostConstruct
> > >         public void initialize() throws SchedulerException{
> > >             System.out.println("Initialize "+this);
> > >             StdSchedulerFactory factory = new StdSchedulerFactory();
> > >
> > >
> > >
> >
> factory.initialize(this.getClass().getResourceAsStream("my.quartz.properties"));
> > >             scheduler = factory.getScheduler();
> > >             scheduler.start();
> > >             System.out.println("scheduler
> > > "+scheduler.getMetaData().getSchedulerName());
> > >         }
> > >
> > >         @PreDestroy
> > >         public void stop() {
> > >             try {
> > >                 System.out.println("scheduler stopping");
> > >                 scheduler.shutdown();
> > >                 System.out.println("scheduler stopped");
> > >             } catch (SchedulerException e) {
> > >                 e.printStackTrace();
> > >             }
> > >         }
> > >
> > > }
> > >
> > > import javax.ejb.Lock;
> > > import javax.ejb.LockType;
> > > import javax.ejb.Schedule;
> > > import javax.ejb.Singleton;
> > > import javax.ejb.Startup;
> > >
> > > @Singleton
> > > @Startup
> > > @Lock(LockType.READ)
> > > public class DefaultTimer {
> > >
> > >     @Schedule(second = "0", minute = "*", hour = "*", info =
> > > "defaultTimer")
> > >     public void periodic() {
> > >         System.out.println("running periodic timer");
> > >     }
> > > }
> > >
> > > my.quartz.properties
> > >
> > >
> >
> #============================================================================
> > > # Configure Main Scheduler Properties
> > >
> > >
> >
> #============================================================================
> > >
> > > org.quartz.scheduler.instanceName = MyClusteredScheduler2
> > > org.quartz.scheduler.instanceId = AUTO
> > >
> > >
> > >
> >
> #============================================================================
> > > # Configure ThreadPool
> > >
> > >
> >
> #============================================================================
> > >
> > > org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> > > org.quartz.threadPool.threadCount = 10
> > > org.quartz.threadPool.threadPriority = 5
> > >
> > > application.properties (tomee conf)
> > >
> > >
> > >
> >
> #============================================================================
> > > # Configure Main Scheduler Properties
> > >
> > >
> >
> #============================================================================
> > >
> > > org.quartz.scheduler.instanceName = myScheduler
> > > org.quartz.scheduler.instanceId = AUTO
> > >
> > >
> > >
> >
> #============================================================================
> > > # Configure ThreadPool
> > >
> > >
> >
> #============================================================================
> > >
> > > org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> > > org.quartz.threadPool.threadCount = 10
> > > org.quartz.threadPool.threadPriority = 5
> > >
> > >
> > > I am not sure if I am using some wrong quartz key in the properties
> file.
> > > This kind of thing seems to work in 1.6.0, before the quartz packages
> > > refactoring in tomee.
> > >
> > > Complete stacktrace below
> > >
> > > Initialize CustomTimer@161485de
> > > Oct 23, 2015 12:04:33 PM
> > org.apache.openejb.quartz.impl.StdSchedulerFactory
> > > instantiate
> > > INFO: Using default implementation for ThreadExecutor
> > > Oct 23, 2015 12:04:33 PM
> > > org.apache.openejb.core.transaction.EjbTransactionUtil
> > > handleSystemException
> > > SEVERE: EjbTransactionUtil.handleSystemException: Thread count must be
> >
> > 0
> > > org.apache.openejb.quartz.SchedulerConfigException: Thread count must
> be
> > >
> > > 0
> > >     at
> > >
> > >
> >
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
> > >     at
> > >
> > >
> >
> org.apache.openejb.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1288)
> > >     at
> > >
> > >
> >
> org.apache.openejb.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1519)
> > >     at CustomTimer.initialize(CustomTimer.java:24)
> > >     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:192)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$LifecycleInvocation.invoke(ReflectionInvocationContext.java:223)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
> > >     at
> > >
> > >
> >
> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
> > >     at
> > >
> > >
> >
> org.apache.openejb.monitoring.StatsInterceptor.PostConstruct(StatsInterceptor.java:109)
> > >     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:192)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
> > >     at
> org.apache.openejb.BeanContext.newInstance(BeanContext.java:1590)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:179)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:69)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:120)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:118)
> > >     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:129)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:93)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.start(SingletonInstanceManager.java:84)
> > >     at
> > >
> > >
> >
> org.apache.openejb.core.singleton.SingletonContainer.start(SingletonContainer.java:125)
> > >     at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.startEjbs(Assembler.java:1382)
> > >     at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:878)
> > >     at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:652)
> > >     at
> > >
> > >
> >
> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1261)
> > >     at
> > >
> > >
> >
> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1100)
> > >     at
> > >
> > >
> >
> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
> > >     at
> > >
> > >
> >
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> > >     at
> > >
> > >
> >
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
> > >     at
> > >
> > >
> >
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416)
> > >     at
> > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> > >     at
> > >
> > >
> >
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
> > >     at
> > >
> > >
> >
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
> > >     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> > >     at
> > >
> > >
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > >     at
> > >
> > >
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > >     at java.lang.Thread.run(Thread.java:745)
> > >
> > >
> > > []
> > >
> > > Leo
> > >
> > > On Mon, Sep 28, 2015 at 5:43 PM, Howard W. Smith, Jr. <
> > > smithh032772@gmail.com> wrote:
> > >
> > > > My apologies, I did not see that behavior.
> > > >
> > > > On Mon, Sep 28, 2015 at 4:15 PM, Howard W. Smith, Jr. <
> > > > smithh032772@gmail.com> wrote:
> > > >
> > > > >
> > > > >
> > > > > On Mon, Sep 28, 2015 at 3:55 PM, Romain Manni-Bucau <
> > > > rmannibucau@gmail.com
> > > > > > wrote:
> > > > >
> > > > >> got it but knowing 1.7.2 has the same issue helps to identify if
> we
> > > need
> > > > >> to
> > > > >> solve an unidentified issue or a fixed issue with potentially a
> > > > >> workwround.
> > > > >>
> > > > >>
> > > > > hmmm, i've been using tomee 1.7.2 (in production) ever since June
> > 2015,
> > > > > and I think I saw this behavior, too, recently (once or twice). Let
> > me
> > > > > check my log files and confirm.
> > > > >
> > > > >
> > > > What I saw was my app attempting to send multiple emails via my
> > JavaMail
> > > > POJO, invoked by some non-JMS code and immediately after via some
> > JMS/MDB
> > > > code, initializing twice,
> > > >
> > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> > > > mailSession
> > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> > > > mailSession
> > > >
> > > > and then initialized,
> > > >
> > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > > > mailSession
> > > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > > > mailSession
> > > >
> > >
> >
>

Re: singleton initializing twice? (1.6.0-stable)

Posted by "Leonardo K. Shikida" <sh...@gmail.com>.
notice that if I just comment CustomTimer.initialize(), tomee starts
normally, even using the old prefixes

[]

Leo

On Fri, Oct 23, 2015 at 12:15 PM, Romain Manni-Bucau <rm...@gmail.com>
wrote:

> can be a side effect of org.quartz relocation in org.apache.openejb.quartz
> (config prefix changed as well). We limit the config side effects in our
> code but since you do it yourself you see it.
>
>
> 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-10-23 16:09 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:
>
> > well, with 1.7.2 I get a different error message.
> >
> > SEVERE: EjbTransactionUtil.handleSystemException: Thread count must be >
> 0
> > org.apache.openejb.quartz.SchedulerConfigException: Thread count must be
> >
> > 0
> >     at
> >
> >
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
> >
> > here's what I am trying (sorry, no github here)
> >
> > import javax.annotation.PostConstruct;
> > import javax.annotation.PreDestroy;
> > import javax.ejb.Singleton;
> > import javax.ejb.Startup;
> >
> > import org.apache.openejb.quartz.Scheduler;
> > import org.apache.openejb.quartz.SchedulerException;
> > import org.apache.openejb.quartz.impl.StdSchedulerFactory;
> >
> > @Startup
> > @Singleton
> > public class CustomTimer {
> >         private Scheduler scheduler;
> >
> >         @PostConstruct
> >         public void initialize() throws SchedulerException{
> >             System.out.println("Initialize "+this);
> >             StdSchedulerFactory factory = new StdSchedulerFactory();
> >
> >
> >
> factory.initialize(this.getClass().getResourceAsStream("my.quartz.properties"));
> >             scheduler = factory.getScheduler();
> >             scheduler.start();
> >             System.out.println("scheduler
> > "+scheduler.getMetaData().getSchedulerName());
> >         }
> >
> >         @PreDestroy
> >         public void stop() {
> >             try {
> >                 System.out.println("scheduler stopping");
> >                 scheduler.shutdown();
> >                 System.out.println("scheduler stopped");
> >             } catch (SchedulerException e) {
> >                 e.printStackTrace();
> >             }
> >         }
> >
> > }
> >
> > import javax.ejb.Lock;
> > import javax.ejb.LockType;
> > import javax.ejb.Schedule;
> > import javax.ejb.Singleton;
> > import javax.ejb.Startup;
> >
> > @Singleton
> > @Startup
> > @Lock(LockType.READ)
> > public class DefaultTimer {
> >
> >     @Schedule(second = "0", minute = "*", hour = "*", info =
> > "defaultTimer")
> >     public void periodic() {
> >         System.out.println("running periodic timer");
> >     }
> > }
> >
> > my.quartz.properties
> >
> >
> #============================================================================
> > # Configure Main Scheduler Properties
> >
> >
> #============================================================================
> >
> > org.quartz.scheduler.instanceName = MyClusteredScheduler2
> > org.quartz.scheduler.instanceId = AUTO
> >
> >
> >
> #============================================================================
> > # Configure ThreadPool
> >
> >
> #============================================================================
> >
> > org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> > org.quartz.threadPool.threadCount = 10
> > org.quartz.threadPool.threadPriority = 5
> >
> > application.properties (tomee conf)
> >
> >
> >
> #============================================================================
> > # Configure Main Scheduler Properties
> >
> >
> #============================================================================
> >
> > org.quartz.scheduler.instanceName = myScheduler
> > org.quartz.scheduler.instanceId = AUTO
> >
> >
> >
> #============================================================================
> > # Configure ThreadPool
> >
> >
> #============================================================================
> >
> > org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> > org.quartz.threadPool.threadCount = 10
> > org.quartz.threadPool.threadPriority = 5
> >
> >
> > I am not sure if I am using some wrong quartz key in the properties file.
> > This kind of thing seems to work in 1.6.0, before the quartz packages
> > refactoring in tomee.
> >
> > Complete stacktrace below
> >
> > Initialize CustomTimer@161485de
> > Oct 23, 2015 12:04:33 PM
> org.apache.openejb.quartz.impl.StdSchedulerFactory
> > instantiate
> > INFO: Using default implementation for ThreadExecutor
> > Oct 23, 2015 12:04:33 PM
> > org.apache.openejb.core.transaction.EjbTransactionUtil
> > handleSystemException
> > SEVERE: EjbTransactionUtil.handleSystemException: Thread count must be >
> 0
> > org.apache.openejb.quartz.SchedulerConfigException: Thread count must be
> >
> > 0
> >     at
> >
> >
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
> >     at
> >
> >
> org.apache.openejb.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1288)
> >     at
> >
> >
> org.apache.openejb.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1519)
> >     at CustomTimer.initialize(CustomTimer.java:24)
> >     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:192)
> >     at
> >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$LifecycleInvocation.invoke(ReflectionInvocationContext.java:223)
> >     at
> >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
> >     at
> >
> >
> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
> >     at
> >
> >
> org.apache.openejb.monitoring.StatsInterceptor.PostConstruct(StatsInterceptor.java:109)
> >     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:192)
> >     at
> >
> >
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
> >     at
> >
> >
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
> >     at org.apache.openejb.BeanContext.newInstance(BeanContext.java:1590)
> >     at
> >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:179)
> >     at
> >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:69)
> >     at
> >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:120)
> >     at
> >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:118)
> >     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> >     at
> >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:129)
> >     at
> >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:93)
> >     at
> >
> >
> org.apache.openejb.core.singleton.SingletonInstanceManager.start(SingletonInstanceManager.java:84)
> >     at
> >
> >
> org.apache.openejb.core.singleton.SingletonContainer.start(SingletonContainer.java:125)
> >     at
> >
> >
> org.apache.openejb.assembler.classic.Assembler.startEjbs(Assembler.java:1382)
> >     at
> >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:878)
> >     at
> >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:652)
> >     at
> >
> >
> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1261)
> >     at
> >
> >
> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1100)
> >     at
> >
> >
> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
> >     at
> >
> >
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> >     at
> >
> >
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
> >     at
> >
> >
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416)
> >     at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> >     at
> >
> >
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
> >     at
> >
> >
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
> >     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> >     at
> >
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> >     at
> >
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> >     at java.lang.Thread.run(Thread.java:745)
> >
> >
> > []
> >
> > Leo
> >
> > On Mon, Sep 28, 2015 at 5:43 PM, Howard W. Smith, Jr. <
> > smithh032772@gmail.com> wrote:
> >
> > > My apologies, I did not see that behavior.
> > >
> > > On Mon, Sep 28, 2015 at 4:15 PM, Howard W. Smith, Jr. <
> > > smithh032772@gmail.com> wrote:
> > >
> > > >
> > > >
> > > > On Mon, Sep 28, 2015 at 3:55 PM, Romain Manni-Bucau <
> > > rmannibucau@gmail.com
> > > > > wrote:
> > > >
> > > >> got it but knowing 1.7.2 has the same issue helps to identify if we
> > need
> > > >> to
> > > >> solve an unidentified issue or a fixed issue with potentially a
> > > >> workwround.
> > > >>
> > > >>
> > > > hmmm, i've been using tomee 1.7.2 (in production) ever since June
> 2015,
> > > > and I think I saw this behavior, too, recently (once or twice). Let
> me
> > > > check my log files and confirm.
> > > >
> > > >
> > > What I saw was my app attempting to send multiple emails via my
> JavaMail
> > > POJO, invoked by some non-JMS code and immediately after via some
> JMS/MDB
> > > code, initializing twice,
> > >
> > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> > > mailSession
> > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> > > mailSession
> > >
> > > and then initialized,
> > >
> > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > > mailSession
> > > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > > mailSession
> > >
> >
>

Re: singleton initializing twice? (1.6.0-stable)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
can be a side effect of org.quartz relocation in org.apache.openejb.quartz
(config prefix changed as well). We limit the config side effects in our
code but since you do it yourself you see it.


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-10-23 16:09 GMT+02:00 Leonardo K. Shikida <sh...@gmail.com>:

> well, with 1.7.2 I get a different error message.
>
> SEVERE: EjbTransactionUtil.handleSystemException: Thread count must be > 0
> org.apache.openejb.quartz.SchedulerConfigException: Thread count must be >
> 0
>     at
>
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
>
> here's what I am trying (sorry, no github here)
>
> import javax.annotation.PostConstruct;
> import javax.annotation.PreDestroy;
> import javax.ejb.Singleton;
> import javax.ejb.Startup;
>
> import org.apache.openejb.quartz.Scheduler;
> import org.apache.openejb.quartz.SchedulerException;
> import org.apache.openejb.quartz.impl.StdSchedulerFactory;
>
> @Startup
> @Singleton
> public class CustomTimer {
>         private Scheduler scheduler;
>
>         @PostConstruct
>         public void initialize() throws SchedulerException{
>             System.out.println("Initialize "+this);
>             StdSchedulerFactory factory = new StdSchedulerFactory();
>
>
> factory.initialize(this.getClass().getResourceAsStream("my.quartz.properties"));
>             scheduler = factory.getScheduler();
>             scheduler.start();
>             System.out.println("scheduler
> "+scheduler.getMetaData().getSchedulerName());
>         }
>
>         @PreDestroy
>         public void stop() {
>             try {
>                 System.out.println("scheduler stopping");
>                 scheduler.shutdown();
>                 System.out.println("scheduler stopped");
>             } catch (SchedulerException e) {
>                 e.printStackTrace();
>             }
>         }
>
> }
>
> import javax.ejb.Lock;
> import javax.ejb.LockType;
> import javax.ejb.Schedule;
> import javax.ejb.Singleton;
> import javax.ejb.Startup;
>
> @Singleton
> @Startup
> @Lock(LockType.READ)
> public class DefaultTimer {
>
>     @Schedule(second = "0", minute = "*", hour = "*", info =
> "defaultTimer")
>     public void periodic() {
>         System.out.println("running periodic timer");
>     }
> }
>
> my.quartz.properties
>
> #============================================================================
> # Configure Main Scheduler Properties
>
> #============================================================================
>
> org.quartz.scheduler.instanceName = MyClusteredScheduler2
> org.quartz.scheduler.instanceId = AUTO
>
>
> #============================================================================
> # Configure ThreadPool
>
> #============================================================================
>
> org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> org.quartz.threadPool.threadCount = 10
> org.quartz.threadPool.threadPriority = 5
>
> application.properties (tomee conf)
>
>
> #============================================================================
> # Configure Main Scheduler Properties
>
> #============================================================================
>
> org.quartz.scheduler.instanceName = myScheduler
> org.quartz.scheduler.instanceId = AUTO
>
>
> #============================================================================
> # Configure ThreadPool
>
> #============================================================================
>
> org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
> org.quartz.threadPool.threadCount = 10
> org.quartz.threadPool.threadPriority = 5
>
>
> I am not sure if I am using some wrong quartz key in the properties file.
> This kind of thing seems to work in 1.6.0, before the quartz packages
> refactoring in tomee.
>
> Complete stacktrace below
>
> Initialize CustomTimer@161485de
> Oct 23, 2015 12:04:33 PM org.apache.openejb.quartz.impl.StdSchedulerFactory
> instantiate
> INFO: Using default implementation for ThreadExecutor
> Oct 23, 2015 12:04:33 PM
> org.apache.openejb.core.transaction.EjbTransactionUtil
> handleSystemException
> SEVERE: EjbTransactionUtil.handleSystemException: Thread count must be > 0
> org.apache.openejb.quartz.SchedulerConfigException: Thread count must be >
> 0
>     at
>
> org.apache.openejb.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:242)
>     at
>
> org.apache.openejb.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1288)
>     at
>
> org.apache.openejb.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1519)
>     at CustomTimer.initialize(CustomTimer.java:24)
>     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:192)
>     at
>
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$LifecycleInvocation.invoke(ReflectionInvocationContext.java:223)
>     at
>
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>     at
>
> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
>     at
>
> org.apache.openejb.monitoring.StatsInterceptor.PostConstruct(StatsInterceptor.java:109)
>     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:192)
>     at
>
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>     at
>
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
>     at org.apache.openejb.BeanContext.newInstance(BeanContext.java:1590)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.createInstance(SingletonInstanceManager.java:179)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.access$100(SingletonInstanceManager.java:69)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:120)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager$1.call(SingletonInstanceManager.java:118)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.getInstance(SingletonInstanceManager.java:129)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.initialize(SingletonInstanceManager.java:93)
>     at
>
> org.apache.openejb.core.singleton.SingletonInstanceManager.start(SingletonInstanceManager.java:84)
>     at
>
> org.apache.openejb.core.singleton.SingletonContainer.start(SingletonContainer.java:125)
>     at
>
> org.apache.openejb.assembler.classic.Assembler.startEjbs(Assembler.java:1382)
>     at
>
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:878)
>     at
>
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:652)
>     at
>
> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1261)
>     at
>
> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1100)
>     at
>
> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
>     at
>
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>     at
>
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
>     at
>
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416)
>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>     at
>
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
>     at
>
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>     at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>     at java.lang.Thread.run(Thread.java:745)
>
>
> []
>
> Leo
>
> On Mon, Sep 28, 2015 at 5:43 PM, Howard W. Smith, Jr. <
> smithh032772@gmail.com> wrote:
>
> > My apologies, I did not see that behavior.
> >
> > On Mon, Sep 28, 2015 at 4:15 PM, Howard W. Smith, Jr. <
> > smithh032772@gmail.com> wrote:
> >
> > >
> > >
> > > On Mon, Sep 28, 2015 at 3:55 PM, Romain Manni-Bucau <
> > rmannibucau@gmail.com
> > > > wrote:
> > >
> > >> got it but knowing 1.7.2 has the same issue helps to identify if we
> need
> > >> to
> > >> solve an unidentified issue or a fixed issue with potentially a
> > >> workwround.
> > >>
> > >>
> > > hmmm, i've been using tomee 1.7.2 (in production) ever since June 2015,
> > > and I think I saw this behavior, too, recently (once or twice). Let me
> > > check my log files and confirm.
> > >
> > >
> > What I saw was my app attempting to send multiple emails via my JavaMail
> > POJO, invoked by some non-JMS code and immediately after via some JMS/MDB
> > code, initializing twice,
> >
> > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> > mailSession
> > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > INFO: JavaMail.initMailSession(): initializing DEFAULT instance of
> > mailSession
> >
> > and then initialized,
> >
> > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > mailSession
> > Sep 23, 2015 11:02:06 PM utils.mail.JavaMail initMailSession
> > INFO: JavaMail.initMailSession(): initialized DEFAULT instance of
> > mailSession
> >
>