- 浏览: 1268673 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
ypzhangyx:
这要是个小白,看你的文章就得哭啊
AIX安装weblogic并部署web应用 -
cobly1837:
java encoding参考 -
lvwenwen:
very good! mark
银行业务细分,商业银行业务学习(二) -
waiting:
买过这3本书,的确有奇效!
读《火柴棒医生手记》,周尔晋奇人奇事 -
andy20008:
非NT服务修改JVM内存大小 与 NT服务修改JVM内存大小 ...
JIRA不完全手册
1.TimerTask
>>配置文件default-lazy-init="false"如果为true则不会启动Timer
>>INFO [org.springframework.scheduling.timer.TimerFactoryBean] - Initializing Timer
表示启动了定时.
>>但是用AbstractDependencyInjectionSpringContextTests这个类来加载spring的配置文件后虽然启动了定时任务,但是马上执行以下步骤:
Closing application context
Destroying singletons in...
Cancelling Timer
所以定时任务不能执行.
>>如果使用new ClassPathXmlApplicationContext(String[])来加载配置文件,则在Initializing Timer后就程序就退出了,真是怪事.
>>用org.springframework.web.context.ContextLoaderListener 在web应用环境下加载配置文件可以正确执行定时任务.
spring bean配置如下:
2.quartz
>>使用autowire by name的禁忌:不要有叫dataSource的bean存在.
见http://eyejava.iteye.com/blog/58281
>>cronExpression和unix cronTab文件的区别
cronTab没有秒 和 年这两个栏位,cronTab 的星期天用0表示,cronExpression用7表示
>>cronExpression:
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".
“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”。
The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.
“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。
The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".
“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。
The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".
“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”.
The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". Specifying '*' before the '/' is equivalent to specifying 0 is the value to start with. Essentially, for each field in the expression, there is a set of numbers that can be turned on or off. For seconds and minutes, the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to 31, and for months 1 to 12. The "/" character simply helps you turn on every "nth" value in the given set. Thus "7/6" in the month field only turns on month "7", it does NOT mean every 6th month, please note that subtlety.
The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.
The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days.
The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month".
The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.
The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday".
我觉得还是要视具体情况而论。也有可能视你的同步程序本身有问题。
我曾经做过一个用于同步的程序,一样在web容器中,使用Spring的封装调用quartz,跑了一年多,一点问题也没有。当然这不是绝对的,要看具体的业务了。
我是用quartz定时发邮件提醒,但是造成了内存泄漏
不妨把你的程序片断发给我看一下,看看问题在哪里。
我觉得还是要视具体情况而论。也有可能视你的同步程序本身有问题。
我曾经做过一个用于同步的程序,一样在web容器中,使用Spring的封装调用quartz,跑了一年多,一点问题也没有。当然这不是绝对的,要看具体的业务了。
我是用quartz定时发邮件提醒,但是造成了内存泄漏
我觉得还是要视具体情况而论。也有可能视你的同步程序本身有问题。
我曾经做过一个用于同步的程序,一样在web容器中,使用Spring的封装调用quartz,跑了一年多,一点问题也没有。当然这不是绝对的,要看具体的业务了。
有具体点的原因吗? 不能仅仅因为"小心" 两字就不用了吧.
要调用spring管理的bean,又要达到cron表达式的定时配置,不用spring的集成,还有什么更方便的解决办法?
>>配置文件default-lazy-init="false"如果为true则不会启动Timer
>>INFO [org.springframework.scheduling.timer.TimerFactoryBean] - Initializing Timer
表示启动了定时.
>>但是用AbstractDependencyInjectionSpringContextTests这个类来加载spring的配置文件后虽然启动了定时任务,但是马上执行以下步骤:
Closing application context
Destroying singletons in...
Cancelling Timer
所以定时任务不能执行.
>>如果使用new ClassPathXmlApplicationContext(String[])来加载配置文件,则在Initializing Timer后就程序就退出了,真是怪事.
>>用org.springframework.web.context.ContextLoaderListener 在web应用环境下加载配置文件可以正确执行定时任务.
spring bean配置如下:
<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> <property name="delay" value="1000" /> <property name="period" value="50000" /> <property name="timerTask" ref="scoringService" /> </bean> <bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean"> <property name="scheduledTimerTasks"> <list> <ref bean="scheduledTask" /> </list> </property> <property name="daemon" value="true"/> </bean>
2.quartz
>>使用autowire by name的禁忌:不要有叫dataSource的bean存在.
见http://eyejava.iteye.com/blog/58281
>>cronExpression和unix cronTab文件的区别
cronTab没有秒 和 年这两个栏位,cronTab 的星期天用0表示,cronExpression用7表示
>>cronExpression:
引用
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".
“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”。
The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.
“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。
The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".
“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。
The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".
“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”.
The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". Specifying '*' before the '/' is equivalent to specifying 0 is the value to start with. Essentially, for each field in the expression, there is a set of numbers that can be turned on or off. For seconds and minutes, the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to 31, and for months 1 to 12. The "/" character simply helps you turn on every "nth" value in the given set. Thus "7/6" in the month field only turns on month "7", it does NOT mean every 6th month, please note that subtlety.
The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.
The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days.
The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month".
The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.
The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday".
评论
10 楼
rainlife
2007-04-09
下半部分怎么回事啊?根本看不出来,是在解析代码格式的时候出了问题吗?
9 楼
bitlong
2007-03-11
泄露问题一般是对API是使用或者理解不当造成的。当然不排除程序的BUG,这个概率相对小点
8 楼
downpour
2007-03-09
Ivan Li 写道
downpour 写道
Ivan Li 写道
使用在web容器中使用quartz要小心了,会造成问题,robbin以前说过这个问题,我在项目中也碰到过服务器内存无法被释放的问题,后来把quartz去掉就好了
我觉得还是要视具体情况而论。也有可能视你的同步程序本身有问题。
我曾经做过一个用于同步的程序,一样在web容器中,使用Spring的封装调用quartz,跑了一年多,一点问题也没有。当然这不是绝对的,要看具体的业务了。
我是用quartz定时发邮件提醒,但是造成了内存泄漏
不妨把你的程序片断发给我看一下,看看问题在哪里。
7 楼
IvanLi
2007-03-09
downpour 写道
Ivan Li 写道
使用在web容器中使用quartz要小心了,会造成问题,robbin以前说过这个问题,我在项目中也碰到过服务器内存无法被释放的问题,后来把quartz去掉就好了
我觉得还是要视具体情况而论。也有可能视你的同步程序本身有问题。
我曾经做过一个用于同步的程序,一样在web容器中,使用Spring的封装调用quartz,跑了一年多,一点问题也没有。当然这不是绝对的,要看具体的业务了。
我是用quartz定时发邮件提醒,但是造成了内存泄漏
6 楼
dearwolf
2007-03-09
文章下半部分实在是太乱了
5 楼
downpour
2007-03-09
Ivan Li 写道
使用在web容器中使用quartz要小心了,会造成问题,robbin以前说过这个问题,我在项目中也碰到过服务器内存无法被释放的问题,后来把quartz去掉就好了
我觉得还是要视具体情况而论。也有可能视你的同步程序本身有问题。
我曾经做过一个用于同步的程序,一样在web容器中,使用Spring的封装调用quartz,跑了一年多,一点问题也没有。当然这不是绝对的,要看具体的业务了。
4 楼
IvanLi
2007-03-09
http://www.iteye.com/topic/40970
看看这篇贴子4楼,robbin的话在我的项目中得到了证实,所以我不在web 容器里用quartz了,解决方案robbin说了
看看这篇贴子4楼,robbin的话在我的项目中得到了证实,所以我不在web 容器里用quartz了,解决方案robbin说了
3 楼
eyejava
2007-03-09
Ivan Li 写道
使用在web容器中使用quartz要小心了,会造成问题,robbin以前说过这个问题,我在项目中也碰到过服务器内存无法被释放的问题,后来把quartz去掉就好了
有具体点的原因吗? 不能仅仅因为"小心" 两字就不用了吧.
要调用spring管理的bean,又要达到cron表达式的定时配置,不用spring的集成,还有什么更方便的解决办法?
2 楼
Godlikeme
2007-03-09
后面乱七八糟的,需要整理下。文档里的内容就不要再复制出来了,参考就行了。
1 楼
IvanLi
2007-03-09
使用在web容器中使用quartz要小心了,会造成问题,robbin以前说过这个问题,我在项目中也碰到过服务器内存无法被释放的问题,后来把quartz去掉就好了
发表评论
-
继续说代理:用apache给tomcat/weblogic设置代理
2009-08-14 14:03 6294mod_proxy 是Apache 自带的 模块使用代理技术来 ... -
mysql errorcode: 17的原因及解决
2009-04-09 16:22 3448Caused by: java.sql.SQLExceptio ... -
用foxit reader 3.0快速建立pdf书签
2009-02-12 12:33 8683foxit reader 2.3之后加入了自定义书签的功能,官 ... -
strokeit
2008-12-19 17:34 0http://www.wecycling.com/index. ... -
Cognos reportnet开启权限认证针对空报表拆分产生的exception是不同的
2008-12-17 15:50 3326未开启权限认证时,即 ... -
FT,有时候重新设定环境变量还得重启Windows机器
2008-11-25 11:46 2416一台windows 2003 server机器,安装了cogn ... -
ping Source quench received
2008-10-28 15:27 2598ping error "source requenc ... -
foxmail没法压缩邮箱的解决办法
2008-10-28 09:32 5238通过Gmail发送了几个超大的邮件,最大的一个有20万行 ... -
beyond compare3使用
2008-08-27 23:42 41651.比较文本数据差异。 文本数据指的是类似csv文件的数据、定 ... -
svn:ignore
2008-07-04 14:44 76601.已经在版本控制的目录或者文件是不能加入svn:ignore ... -
Foxmail邮件备份到Gmail
2008-05-20 17:21 6180Gmail不断增长貌似无限制的空间+强大的搜索功能 用于储存邮 ... -
spring bean继承的一个误解
2007-06-05 15:22 3016xxAction继承BaseAction,BaseAction ... -
Maven,想说爱你不容易..
2007-05-27 15:25 2170你用maven你会感觉很环保,但是网络不通的时候却又是无尽的烦 ... -
定时加载文件到数据库tips
2007-05-22 17:50 4444装载文本文件,oracle sqlldr是个好用的工具。 如 ... -
javafx,又一个applet?
2007-05-09 18:26 5351JavaOne 出来的东西,demo和文档:https://o ... -
xwork升级到1.2 反而多了些小问题
2007-04-18 19:12 25971.每调用一个action都给出几条警告: WARN [com ... -
在many-to-many的中间表中配置索引
2007-04-11 15:44 5026<set name="cards" ... -
喜新厌旧的后果
2007-04-10 15:43 2138一直用pl/sql dev 6.0好好的,但是看到最新版本都是 ... -
jboss rules3.1m终于用了一个el:mvel,性能与ognl的对比有些让人吃惊
2007-04-10 13:41 8116引用 Later I will also move templ ... -
加班被锁,郁闷...
2007-04-05 20:25 3686等待解救中...
相关推荐
在Spring框架中集成Quartz,可以充分利用Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)特性,使任务调度更加灵活且易于管理。 1. **Quartz简介** Quartz 是一个完全由Java编写的开源...
Spring框架作为Java领域广泛使用的轻量级框架,提供了与第三方库Quartz的整合,使得开发者能够轻松地在Spring应用中实现复杂的定时任务调度。Quartz是一款开源的作业调度框架,支持丰富的调度策略,可以满足各种定时...
Spring的任务调度模块使得开发者能够在应用中轻松地定义和执行定时任务,极大地提高了代码的可维护性和灵活性。 标题"Spring 任务调度"涵盖了Spring框架中的两个主要组件:Spring Task和Quartz Scheduler。Spring ...
结合Eclipse和Maven,创建Spring定时任务项目时,你需要: 1. 创建一个新的Maven项目,并添加Spring的相关依赖,如`spring-context`, `spring-context-support`(对于Spring Task),以及`quartz`和`spring-quartz`...
给定的压缩包可能包含了一个关于如何配置、使用和测试Spring定时任务的文档。这个文档应该详细介绍了每个步骤,包括如何在Spring环境中注册和启动定时任务,如何编写带有`@Scheduled`注解的方法,以及如何编写测试...
下面我们将深入探讨Spring定时任务所需的相关jar包以及它们的功能。 首先,Spring框架的核心jar包`spring-context.jar`是必不可少的。这个jar包包含了Spring的核心功能,如依赖注入(Dependency Injection,DI)、...
在Spring框架中,定时任务是实现系统自动化运行关键任务的重要工具。Spring提供了多种方式来创建和管理定时任务,...在chapter13目录下的文件可能包含了这些源码示例,你可以逐一研究,加深对Spring定时任务的理解。
总结起来,Spring动态定时调度任务通过结合Quartz和Spring的集成,实现了任务执行时间的灵活性。用户可以根据需求动态地调整任务的触发时间和频率,而无需修改代码或重启服务。这大大提高了系统的可扩展性和适应性,...
在非Web项目中实现Spring定时任务,主要步骤如下: 1. **配置Spring Task**:在Spring的配置文件(如`applicationContext.xml`或使用Java配置类)中,我们需要启用任务调度功能并配置相应的执行器或调度器。例如,...
首先,Spring提供了两种主要的任务调度机制:Spring内置的`TaskExecution`和`TaskScheduling`以及与Quartz Scheduler的集成。`TaskExecution`和`TaskScheduling`是Spring框架的基础任务调度API,它们允许开发者创建...
本文将详细探讨Spring定时任务的关键知识点,并与提供的jar包列表关联。 首先,Spring定时任务主要依赖于`spring-context-support`模块,这个模块包含了处理定时任务所需的类和接口。在压缩包`lib`中,应该包含了这...
总结一下,Spring提供了灵活的任务调度方案,涵盖了从简单的定时任务到复杂的批处理作业。了解并熟练掌握这三种方式,可以帮助我们根据项目需求选择合适的任务调度工具,提升应用程序的自动化和效率。
此外,Spring Task与Spring框架的集成更加紧密,使得任务调度与业务逻辑的解耦更加自然。 对于Quartz的使用,我们可以通过以下步骤创建一个定时任务: 1. 定义作业类,继承`QuartzJobBean`,并重写`executeInternal...
在这两种方式中,Spring框架提供了自己的定时任务工具Spring Task,以及与专业定时任务框架Quartz集成的能力。 首先,对于Java自带的定时任务实现,我们可以使用java.util.Timer和java.util.TimerTask类。Timer类...
Spring框架提供了强大的任务调度能力,使得开发者能够轻松地集成和管理定时任务。本资料“Spring实现任务调度”将深入探讨如何在Spring中设置和管理定时任务。 首先,我们需要理解Spring中的任务调度机制。Spring...
1. **Spring Task模块**:这是Spring提供的一个核心模块,用于执行后台任务和定时调度。它提供了两种主要的方式来安排任务:`@Scheduled`注解和`ThreadPoolTaskScheduler`。前者允许在方法上声明定时任务,而后者则...
在本文中,我们将深入探讨如何在Spring中集成Quartz进行任务调度,并通过一个简单的示例来理解其工作原理。 首先,要在Spring中使用Quartz,你需要将`quartz-all-1.5.2.jar`等相关的Quartz库添加到项目的类路径中。...
总的来说,Quartz2与Spring4的集成提供了一种灵活且可扩展的方式来管理和执行定时任务,结合了Quartz的调度能力和Spring的容器管理优势,使得在Java应用中实现定时任务变得更加简单和高效。同时,通过源码阅读和工具...
在Spring框架中,实现定时任务主要依赖于Spring的集成模块Spring Integration或通过集成第三方库如Quartz来完成。本文将重点介绍如何利用Spring框架结合表达式规则来配置和执行定时任务,这些规则与Linux中的crontab...
Spring 3.0版本引入了对定时任务的支持,这是一个非常实用的功能,可以帮助开发者实现定期执行的任务,如数据同步、报表生成等。本文将深入探讨Spring 3.0中的定时任务实现,并结合Quartz库来进一步扩展定时任务的...