Hi maybe try to add: -Dopenejb.classloader.forced-load=org.quartz Romain Manni-Bucau Twitter: @rmannibucau Blog: http://rmannibucau.wordpress.com/ LinkedIn: http://fr.linkedin.com/in/rmannibucau Github: https://github.com/rmannibucau
2013/11/5 rdeleon <[email protected]>: > 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.
