tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leonardo K. Shikida" <shik...@gmail.com>
Subject Re: singleton initializing twice? (1.6.0-stable)
Date Fri, 23 Oct 2015 14:09:55 GMT
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
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message