spring quartz 配置为什么tomcat启动后没有马上执行

&>&&>&&>&&>&quartz spring动态定时任务,可以直接在tomcat上面部署运行
quartz spring动态定时任务,可以直接在tomcat上面部署运行
上传大小:26KB
quartz spring动态定时任务,可以直接在tomcat上面部署运行,框架是ssh2+ tomcat
综合评分:2.5(2位用户评分)
所需积分:2
下载次数:36
审核通过送C币
创建者:zhangdaiscott
创建者:id_rin
创建者:qq_
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
quartz spring动态定时任务,可以直接在tomcat上面部署运行
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
javaersummer
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:本帖子已过去太久远了,不再提供回复功能。完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题 - you know,do not explain! - ITeye技术网站
博客分类:
部署说明:
1.创建quartz集群需要的表(web/doc/tables_oracle.sql)
2.引入3个jar包+spring包
quartz-all-1.8.6.jar(web/web-inf/lib)
quartz-expansion.jar(web/web-inf/lib)
quartz-oracle-1.8.6.jar(web/web-inf/lib)
3.修改quartz.properties
修改数据库url,用户名,密码
org.quartz.dataSource.myDS.URL =xxx
org.quartz.dataSource.myDS.user=xxx
org.quartz.dataSource.myDS.password=xxx
4.编写定时任务处理类、
参考cn.medbri.quzrtzexpansion.sendsms.job里面的类
4.修改spring配置
参考web/web-inf/sendsms_config/spring-sendsms.xml 配置
5.详细参考
/blog/337886
附录说明
org.quartz.scheduler.instanceId设置为不同的值,
或者都设置为AUTO。另外org.quartz.jobStore.isClustered属性必须设为true,
org.quartz.jobStore.clusterCheckinInterval属性为集群中每次检查的时间间隔
(按我的理解,应该差不多等于一个服务器挂了之后,其他服务器接手的时间),单位为毫秒,默认值是15000。
concurrent为true,则允许一个QuartzJob并发执行,否则就是顺序执行
shouldRecover属性为true,则当Quartz服务被中止后,再次启动或集群中其他机器接手任务时会尝试恢复执行之前未完成的所有任务
附件是quartz集群demo,解决负载均衡环境下quartz同一定时任务重复跑问题,采用热备方式,一个app server挂掉第二个app server 马上接手定时任务并补上没有跑完的任务。
由于附件太大所有删除了所有lib
只留下了quartz-all-1.8.6.jar(web/web-inf/lib)
quartz-expansion.jar(web/web-inf/lib)
quartz-oracle-1.8.6.jar(web/web-inf/lib)
个lib,请将自己相关lib加入到工程
(475.5 KB)
下载次数: 638
浏览 12733
浏览: 58500 次
来自: 上海
zhibaichuan 写道楼主没找到主要原因,其实是实体类的 ...
不一致也会导致这个错误,这是肯定的啊,这个我知道啊,我们的讨论 ...
楼主没找到主要原因,其实是实体类的字段大小写和if语句里的字段 ...
把标签去了,那就用不了动态语句了啊,不过还是感谢博主,省了我 ...
kjj 写道不是全注解啊,batis那块都是xml!!哦 这个 ...解决spring整合quartz,tomcat关闭后,quartz还在运行
最近项目需要定时任务,首先想到的是用quartz,于是用spring整合quartz,quartz整合spring,需要用到spring的support包,引进后就可以了:
其中配置quartz的spring配置文件:
&&& &bean id="getMessageFromCenter"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&
&property name="targetObject"
ref="polling"&&/property&
&property name="targetMethod"
value="getMessageFromCenter"&&/property&
&bean id="getMessageFromCenterTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean"&
&property name="jobDetail"
ref="getMessageFromCenter"&&/property&
&property name="cronExpression" value="0/20 * * * *
?"&&/property&
&bean id="pollingFaction"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
destroy-method="destroy"&
&property name="triggers"&
bean="getMessageFromCenterTrigger"/&
&/property&
这样我是每隔20秒运行对于的方法。定时任务是执行了,但碰到个非常棘手的问题,就是每次点击tomcat的shutdown.bat时,tomcat容器并未完全关闭,quartz居然还在跑,进程中的tomcat居然也还在,但好多实例已destroy了,quartz一运行,一大堆的错误,这样虽然可以再启动tomcat,但原来那个tomcat还在进程中,一直跑着,内存还占着
,这样一来,如果不知情的,内存会一直撑爆掉去的,纠结了几天,下面是错误详情:
一月 09, :21 上午
org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been
stopped already.& Could not load
org.springframework.core.NestedExceptionUtils.&
The eventual following stack trace is caused by an error thrown for
debugging purposes as well as to attempt to terminate the thread
which caused the illegal access, and has no functional
java.lang.IllegalStateException
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1597)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
org.springframework.core.NestedRuntimeException.(NestedRuntimeException.java:45)
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:320)
org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
org.quartz.core.JobRunShell.run(JobRunShell.java:199)
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:546)
一月 09, :10 上午 org.apache.catalina.startup.Catalina
stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused: connect
java.net.TwoStacksPlainSocketImpl.socketConnect(Native
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
java.net.Socket.connect(Socket.java:579)
java.net.Socket.connect(Socket.java:528)
java.net.Socket.(Socket.java:425)
java.net.Socket.(Socket.java:208)
org.apache.catalina.startup.Catalina.stopServer(Catalina.java:490)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:371)
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:452)
很明显,错误来源是来之quartz,tomcat容器关闭后,log4j已销毁了,quartz一运行,出错,log打日志,然后就会报错。很明显,关闭quartz是必须的,那为什么quartz不随容器关闭呢,至今没搞明白,尝试着下面的做法,在SchedulerFactoryBean的那个标签中添加一个destroy-method="destroy",这个destroy是他自己带的销毁方法,但试了,没用。后来想到加个监听器,进行销毁定时任务计划:
public class ShutdownQuartz implements
ServletContextListener{
&&& public void
contextDestroyed(ServletContextEvent arg0) {
&&&&&&&&&&&
// Get a reference to the Scheduler and shut it down
&&&&&&&&&&&
Scheduler scheduler = (Scheduler)
BeanFactory.getBean("pollingFaction");
&&&&&&&&&&&
scheduler.shutdown(true);
&&&&&&&&&&&
// Sleep for a bit so that we don't get any errors
&&&&&&&&&&&
Thread.sleep(1000);
} catch (Exception e){
&&&&&&&&&&&
e.printStackTrace();
&&& public void
contextInitialized(ServletContextEvent arg0) {
}上面那个BeanFactory.getBean();是我自己框架的获得bean的方法,也可以用别的方法。然后再web.xml中添加一个监听器就OK了,问题解决。
&&/font&listener&
com.mon.ShutdownQuartz
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 spring boot quartz 的文章

 

随机推荐