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.