xml 代码
- 利用spring+quartz进行调度并将quartz信息放置进数据库,出现如下错误:
- java 代码
- 2007-10-23 16:23:52,937 ERROR (ContextLoader.java:205) - Context initialization
- failed
- org.springframework.beans.factory.BeanCreationException: Error creating bean wit
- h name 'schedulerFactory' defined in ServletContext resource [/WEB-INF/quartz.xm
- l]: Invocation of init method failed; nested exception is org.quartz.JobPersiste
- nceException: Couldn't store trigger: org.apache.commons.collections.set.ListOrd
- eredSet [See nested exception: java.io.NotSerializableException: org.apache.comm
- ons.collections.set.ListOrderedSet]
- Caused by:
- org.quartz.JobPersistenceException: Couldn't store trigger: org.apache.commons.c
- ollections.set.ListOrderedSet [See nested exception: java.io.NotSerializableExce
- ption: org.apache.commons.collections.set.ListOrderedSet]
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSup
- port.java:1182)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport$5.execute(JobStoreSuppor
- t.java:1088)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport$39.execute(JobStoreSuppo
- rt.java:3590)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLoc
- k(JobStoreSupport.java:3662)
- at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java
- :93)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInLock(JobStoreSu
- pport.java:3586)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSup
- port.java:1084)
- at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:750)
- at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:266)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.addTrigger
- ToScheduler(SchedulerFactoryBean.java:846)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.registerJo
- bsAndTriggers(SchedulerFactoryBean.java:776)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPrope
- rtiesSet(SchedulerFactoryBean.java:599)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBean
- Factory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1118)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBean
- Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBean
- Factory.createBean(AbstractAutowireCapableBeanFactory.java:429)
- at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
- ject(AbstractBeanFactory.java:250)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
- y.getSingleton(DefaultSingletonBeanRegistry.java:141)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
- (AbstractBeanFactory.java:247)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
- (AbstractBeanFactory.java:161)
- at org.springframework.beans.factory.support.DefaultListableBeanFactory.
- preInstantiateSingletons(DefaultListableBeanFactory.java:270)
- at org.springframework.context.support.AbstractApplicationContext.refres
- h(AbstractApplicationContext.java:346)
- at org.springframework.web.context.support.AbstractRefreshableWebApplica
- tionContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
- at org.springframework.web.context.ContextLoader.createWebApplicationCon
- text(ContextLoader.java:246)
- at org.springframework.web.context.ContextLoader.initWebApplicationConte
- xt(ContextLoader.java:184)
- at org.springframework.web.context.ContextLoaderListener.contextInitiali
- zed(ContextLoaderListener.java:49)
- at org.apache.catalina.core.StandardContext.listenerStart(StandardContex
- t.java:3764)
- at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
- 216)
- at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
- .java:760)
- at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:74
- 0)
- at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
- at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.jav
- a:920)
- at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j
- ava:883)
- at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492
- )
- at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
- at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
- :311)
- at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
- eSupport.java:120)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
- at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
- at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443
- )
- at org.apache.catalina.core.StandardService.start(StandardService.java:4
- 48)
- at org.apache.catalina.core.StandardServer.start(StandardServer.java:700
- )
- at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
- java:39)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
- sorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:585)
- at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
- at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
- Caused by: java.io.NotSerializableException: org.apache.commons.collections.set.
- ListOrderedSet
- at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
- at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
- :1369)
- at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
- 41)
- at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
- a:1284)
- at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
- at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
- :1369)
- at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
- 41)
- at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
- a:1284)
- at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
- at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
- at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.insertBlobTrigger(StdJDB
- CDelegate.java:1198)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSup
- port.java:1178)
- ... 48 more
- 2007-10-23 16:23:53,000 ERROR (StandardContext.java:3768) - Exception sending co
- ntext initialized event to listener instance of class org.springframework.web.co
- ntext.ContextLoaderListener
- org.springframework.beans.factory.BeanCreationException: Error creating bean wit
- h name 'schedulerFactory' defined in ServletContext resource [/WEB-INF/quartz.xm
- l]: Invocation of init method failed; nested exception is org.quartz.JobPersiste
- nceException: Couldn't store trigger: org.apache.commons.collections.set.ListOrd
- eredSet [See nested exception: java.io.NotSerializableException: org.apache.comm
- ons.collections.set.ListOrderedSet]
- Caused by:
- org.quartz.JobPersistenceException: Couldn't store trigger: org.apache.commons.c
- ollections.set.ListOrderedSet [See nested exception: java.io.NotSerializableExce
- ption: org.apache.commons.collections.set.ListOrderedSet]
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSup
- port.java:1182)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport$5.execute(JobStoreSuppor
- t.java:1088)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport$39.execute(JobStoreSuppo
- rt.java:3590)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLoc
- k(JobStoreSupport.java:3662)
- at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java
- :93)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInLock(JobStoreSu
- pport.java:3586)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSup
- port.java:1084)
- at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:750)
- at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:266)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.addTrigger
- ToScheduler(SchedulerFactoryBean.java:846)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.registerJo
- bsAndTriggers(SchedulerFactoryBean.java:776)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPrope
- rtiesSet(SchedulerFactoryBean.java:599)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBean
- Factory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1118)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBean
- Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBean
- Factory.createBean(AbstractAutowireCapableBeanFactory.java:429)
- at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
- ject(AbstractBeanFactory.java:250)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
- y.getSingleton(DefaultSingletonBeanRegistry.java:141)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
- (AbstractBeanFactory.java:247)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
- (AbstractBeanFactory.java:161)
- at org.springframework.beans.factory.support.DefaultListableBeanFactory.
- preInstantiateSingletons(DefaultListableBeanFactory.java:270)
- at org.springframework.context.support.AbstractApplicationContext.refres
- h(AbstractApplicationContext.java:346)
- at org.springframework.web.context.support.AbstractRefreshableWebApplica
- tionContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
- at org.springframework.web.context.ContextLoader.createWebApplicationCon
- text(ContextLoader.java:246)
- at org.springframework.web.context.ContextLoader.initWebApplicationConte
- xt(ContextLoader.java:184)
- at org.springframework.web.context.ContextLoaderListener.contextInitiali
- zed(ContextLoaderListener.java:49)
- at org.apache.catalina.core.StandardContext.listenerStart(StandardContex
- t.java:3764)
- at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
- 216)
- at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
- .java:760)
- at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:74
- 0)
- at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
- at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.jav
- a:920)
- at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j
- ava:883)
- at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492
- )
- at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
- at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
- :311)
- at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
- eSupport.java:120)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
- at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
- at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443
- )
- at org.apache.catalina.core.StandardService.start(StandardService.java:4
- 48)
- at org.apache.catalina.core.StandardServer.start(StandardServer.java:700
- )
- at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
- java:39)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
- sorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:585)
- at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
- at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
- Caused by: java.io.NotSerializableException: org.apache.commons.collections.set.
- ListOrderedSet
- at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
- at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
- :1369)
- at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
- 41)
- at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
- a:1284)
- at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
- at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
- :1369)
- at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
- 41)
- at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
- a:1284)
- at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
- at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
- at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.insertBlobTrigger(StdJDB
- CDelegate.java:1198)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSup
- port.java:1178)
- ... 48 more
- 配置文件:
- java 代码
- #\u914d\u7f6eScheduler\u7684\u57fa\u672c\u4fe1\u606f
- org.quartz.scheduler.instanceName = SpringBookScheduler
- org.quartz.scheduler.instanceId = AUTO
- #\u914d\u7f6eQuartz\u7684\u7ebf\u7a0b\u6c60
- orgorg.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
- org.quartz.threadPool.threadCount = 25
- org.quartz.threadPool.threadPriority = 5
- #\u914d\u7f6e\u6240\u91c7\u7528\u7684JobStore\u65b9\u5f0f
- org.quartz.jobStore.misfireThreshold = 60000
- orgorg.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
- #orgorg.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT
- org.quartz.jobStore.tablePrefix = QRTZ_
- org.quartz.jobStore.useProperties = false
- #\u914d\u7f6eQuartz\u6301\u4e45\u5316
- orgorg.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate
- org.quartz.jobStore.dataSource = epDS
- org.quartz.jobStore.isClustered = false
- org.quartz.dataSource.epDS.driver = net.sourceforge.jtds.jdbc.Driver
- org.quartz.dataSource.epDS.URL = jdbc:jtds:sqlserver://localhost:1433/epDB;user=sa;password=1234;SelectMethod=cursor;
- org.quartz.dataSource.epDS.user = sa
- org.quartz.dataSource.epDS.password = 1234
- rog.quartz.dataSource.epDs.validationQuery = select 1
- bean调度管理文件
- java 代码
- xml 代码
- xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
- <bean id="delImageJob"
- class="org.springframework.scheduling.quartz.JobDetailBean">
- <property name="jobClass">
- <value>ep.spring.model.quartz.DelCodeCheckJobvalue>
- property>
- <property name="jobDataAsMap">
- <map>
- <entry key="messages">
- <value>delCodeCheckJob 初始化 ...value>
- entry>
- map>
- property>
- <bean id="delImageTrigger"
- class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail">
- <ref local="delImageJob"/>
- property>
- <property name="cronExpression">
- <value>0/10 * * * * ?value>
- property>
- bean>
- <bean id="updateIssueFlagTrigger"
- class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail">
- <ref local="updateIssueFlagJob"/>
- property>
- <property name="cronExpression">
- <value>0/10 * * * * ?value>
- property>
- bean>
- <bean id="schedulerFactory"
- class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
- <property name="triggers">
- <list>
- <ref local="delImageTrigger"/>
- <ref local="updateIssueFlagTrigger"/>
- list>
- property>
- <property name="configLocation">
- <value>/WEB-INF/quartzJdbc.propertiesvalue>
- property>
- bean>
- beans>
- job代码
- java 代码
- public class UpdTradeIssueFlagJob implements StatefulJob,Serializable{
- private transient ApplicationContext context ;
- private transient ITradeBS itbss;
- private transient int updateCount ;
- private transient Map mapMsg;
- public UpdTradeIssueFlagJob(){}
- public void execute(JobExecutionContext jec) throws JobExecutionException{
- mapMsg = jec.getMergedJobDataMap();
- context = (ApplicationContext)mapMsg.get("applicationContext");
- itbss = (ITradeBS)context.getBean("trade_bs_impl");
- updateCount = itbss.updateTradeIssueFlagMsg();
- if(updateCount >0)
- mapMsg.put("messages", "行业资讯按时更新发布了 "+ updateCount + " 记录.");
- else
- mapMsg.put("messages", "行业资讯没有按时更新发布的记录.");
- String outMsg = (String)mapMsg.get("messages");
- System.out.println("[任务:"+jec.getJobDetail().getName()+"]"+outMsg);
- }
- }