Hi,

I've been searching around for a while now, and have not seen anything along
these lines yet. I hope I am not duplicating post(s).

I'm having a problem and am struggling quite a bit with it.

I have an EE project, wrapped up in an EAR. Within the EAR I have:
* EJB
* Several WARs

In the EJB, I have a bean which extends QuartzJobBean. In my beans.xml I
have the following:

*beans.xml for WAR:*
/    <bean name="statusScanJob"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="jobClass" value="com.blah.something.StatusScan"/>
        <property name="jobDataAsMap">
            <map>
                <entry key="applicationContextKey"
value-ref="appContextKey"/>
            </map>
        </property>
    </bean>

    <bean name="springJobFactory"
class="org.springframework.scheduling.quartz.SpringBeanJobFactory"/>

    <bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="statusScanJob"/>
        <property name="cronExpression" value="0 0/30 * * * ?"/>
    </bean>/

Everytime I hit this WAR during deployment I experience the following error
within the catalina log file:
*Error--*
/SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'org.springframework.scheduling.quartz.SchedulerFactoryBean#0'
defined in ServletContext resource [/WEB-INF/beans.xml]: Invocation of init
method failed; nested exception is org.quartz.SchedulerException:
Registration of jobs and triggers failed: null [See nested exception:
java.lang.reflect.UndeclaredThrowableException]
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:587)
        at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472)
        at
org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
        at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
        at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
        at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
        at
org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(TomcatWebAppBuilder.java:567)
        at
org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(TomcatWebAppBuilder.java:536)
        at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:780)
        at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:546)
        at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:542)
        at
org.apache.tomee.catalina.TomcatWebAppBuilder.checkHost(TomcatWebAppBuilder.java:1827)
        at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
        at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1374)
        at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530)
        at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
        at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.quartz.SchedulerException: Registration of jobs and triggers
failed: null [See nested exception:
java.lang.reflect.UndeclaredThrowableException]
        at
org.springframework.scheduling.quartz.SchedulerAccessor.registerJobsAndTriggers(SchedulerAccessor.java:322)
        at
org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:511)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
        ... 32 more
Caused by: java.lang.reflect.UndeclaredThrowableException
        at
org.springframework.util.ReflectionUtils.rethrowRuntimeException(ReflectionUtils.java:291)
        at
org.springframework.util.ReflectionUtils.handleInvocationTargetException(ReflectionUtils.java:270)
        at
org.springframework.util.ReflectionUtils.handleReflectionException(ReflectionUtils.java:254)
        at
org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:194)
        at
org.springframework.scheduling.quartz.SchedulerAccessor.triggerExists(SchedulerAccessor.java:432)
        at
org.springframework.scheduling.quartz.SchedulerAccessor.addTriggerToScheduler(SchedulerAccessor.java:359)
        at
org.springframework.scheduling.quartz.SchedulerAccessor.registerJobsAndTriggers(SchedulerAccessor.java:303)
        ... 35 more
Caused by: org.quartz.JobPersistenceException: Couldn't retrieve trigger:
com.blah.something.StatusScan [See nested exception:
java.lang.ClassNotFoundException: com.blah.something.StatusScan]
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1524)
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport$12.execute(JobStoreSupport.java:1512)
        at
org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:245)
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport.executeWithoutLock(JobStoreSupport.java:3716)
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1509)
        at org.quartz.core.QuartzScheduler.getTrigger(QuartzScheduler.java:1477)
        at org.quartz.impl.StdScheduler.getTrigger(StdScheduler.java:499)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:191)
        ... 38 more
Caused by: java.lang.ClassNotFoundException: com.blah.something.StatusScan
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:249)
        at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:601)
        at 
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1572)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493)
        at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1459)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1309)
        at 
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1950)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1874)
        at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1756)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1326)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at java.util.HashMap.readObject(HashMap.java:1030)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:969)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1852)
        at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1756)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1326)
        at 
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1950)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1874)
        at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1756)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1326)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at
org.quartz.impl.jdbcjobstore.StdJDBCDelegate.getObjectFromBlob(StdJDBCDelegate.java:3156)
        at
org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTrigger(StdJDBCDelegate.java:1764)
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1520)
        ... 49 more/

What confuses me is that the class "StatusScan" is packaged within my EJB,
which should be loaded via the classloader but something is amiss. I've been
researching this for quite some time and am quite stuck. My WAR spring bean
config has no visibility to the EJB class...it seems?

I notice that before this exception the QuartzScheduler is generated, but
seemingly not started?

/INFO: Scheduler meta-data: Quartz Scheduler (v2.1.6) 'DC_Quartz_Scheduler'
with instanceId 'DEV1383689759806'
  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 5 threads.
  Using job-store
'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which
supports persistence. and is clustered./

My resource is declared in tomee.xml as so:

/       <Resource id="jdbc/QuartzTimers" type="DataSource">
                accessToUnderlyingConnectionAllowed = false
                defaultAutoCommit = true
                ignoreDefaultValues = false
                initialSize = 1
                jdbcDriver = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
                jdbcUrl = jdbc:mysql://localhost:3306/QuartzTimers
                jtaManaged = true
                maxActive = 20
                maxIdle = 20
                maxOpenPreparedStatements = 0
                maxWaitTime = -1 millisecond
                minEvictableIdleTime = 30 minutes
                minIdle = 0
                numTestsPerEvictionRun = 3
                password = ...
                passwordCipher = PlainText
                poolPreparedStatements = false
                testOnBorrow = true
                testOnReturn = false
                testWhileIdle = false
                timeBetweenEvictionRuns = -1 millisecond
                userName = ...
        </Resource>/

Am I missing anything? Is there anything else that I can provide to get some
sort of assistance/direction with this? 

I'm trying to port our EAR from an older application (glassfish2) to
something else as a part of a POC.

Any response is greatly appreciated. Thanks for your time!

-Randy



--
View this message in context: 
http://openejb.979440.n4.nabble.com/TomEEPlus-1-5-2-Spring-3-1-3-RELEASE-Quartz-2-1-6-tp4665988.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Reply via email to