- 浏览: 151767 次
- 性别:
- 来自: 北京
最新评论
-
pandengzhegt:
好牛!正需要!谢谢了!
JPA 2.0 中的动态类型安全查询 -
yanlp:
万分的感谢。
仿google 的输入提示框 -
huangwenji6111:
可谓良师,在此拜谢!受益匪浅!
hibernate lazy -
jwx0925:
不错!mark!
hibernate对象状态 -
leftstick:
大有裨益,谢了!
hibernate lazy
首先,让spring框架运转起来,可以参看一下:http://www.blogjava.net/heyang/archive/2008/11/24/242397.html。
1、下载spring、quartz。网址这里就不贴了,网上到处都有,只是要注意一下版本,不同版本spring的web.xml配置不一样。
2、把spring配置到工程中,把spring.jar(或者spring-sources.jar)复制到WEB-INF/lib目录下,让系统能找到该类。
3、编辑web.xml,把spring的servlet配置到系统,让spring框架能运转起来。配置如下:
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
需要注意的是,第3行的内容根据spring的版本不同似乎要有不同配置,我用的是2.5.5版,如果是低版本必须配置成下面这样,两者不能兼容。
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
4、在WEB-INF目录下新建spring的配置文件,同样的因为版本不同默认的配置文件名也不一样,低版本的是:spring-servlet.xml,2.5.5的是:applicationContext.xml。这个文件名也可以不同,可以在web.xml中加入配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring.xml</param-value>
</context-param>
5、根据spring的协议配置xml,让spring 运行起来,这个不属于这篇帖子讨论的内容。
然后就是配置quartz了,spring内置了quartz,只要通过简单的配置applicationContext.xml及少量编程就能让quartz在spring框架下运转。quartz的介绍挺多的,这就提两点:一是quartz是任务调度的框架,有两种调度方式:simple和cron模式,simple方式和timertask类似,采用设置interval方式进行调度,而cron可以特有的语法很详细的定制调度执行时间。详细介绍请见http://esffor.iteye.com/blog/96092。另外一点就是注入到quartz框架的任务方式有两种,一种是调用特定方法,这种方法很简单,不要集成quartz的类,可以通过配置文件直接调用的自己编写的类,我用的就是这种方法;另外一种就是继承QuartzJobBean类来完成任务的调度,这种方法虽然复杂了一些,但更灵活,请参看http://ispring.iteye.com/blog/157124。下面是我的步骤:
1、quartz内置在spring中,不需要再单独下载,只需要配置applicationContext.xml如下:
<beans>
<bean id="firstJob" class="com.mc.job.First"></bean>
<!-- 定义目标bean和bean中的方法 -->
<bean id="Job" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref local="firstJob"/>
</property>
<property name="targetMethod">
<!-- 要执行的方法名称 -->
<value>Count</value>
</property>
</bean>
<!--定义触发的时间-->
<bean id="cron" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="Job"/>
</property>
<property name="cronExpression">
<value>0-59 * * * * ?</value>
</property>
</bean>
<!-- 管理触发器 -->
<bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cron"/>
</list>
</property>
</bean>
</beans>
2、编写自己的类First,如下:
1package com.mc.job;
2
3public class First {
4 static long Count=0;
5 public First()
6 {
7 System.out.println("Bean initialized.");
8 }
9 public void doFirst()
10 {
11 Count();
12 }
13 public void Count(){
14 Count++;
15 System.out.print("Count=");
16 System.out.println(Count);
17 }
18}
需要说明的有几点:
1、自己的First类作为一个bean在spring中生成,并注入到org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean类中执行相关方法,需要执行的任务在该方法中实现,我的代码只是输出了一个数字。
2、触发时间需要填写表达式,该表达式的格式网上很多,我这就不再说了,程序中是每秒调用一次。
3、调试的过程中发现报出了异常,找不到某个类,开始百思不得其解,后来才反应过来,在其他quartz的介绍中提到quartz用到了其他第三方组件,需要注意这些组件与工程自身用到的相同组件间的版本冲突,我的情况正好相反,我没用到哪些组件,所以报出异常,把quartz中相关的jar包复制到lib目录下解决问题。
SimpleTriggerBean与ScheduledTimerTask类似。你可以用它来指定一个工作应该以怎样的频度运行,以及(可选地)在第一次运行工作之前应该等待多久。例如,要调度报表工作每24小时运行一次,第一次在1小时之后开始运行,可以按照以下方式进行声明:
Java代码
<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="reportJob"/>
</property>
<property name="startDelay">
<value>3600000</value>
</property>
<property name="repeatInterval">
<value>86400000</value>
</property>
</bean>
属性jobDetail装配了将要被调度的工作,在这个例子中是reportJob Bean。属性repeatInterval告诉触发器以怎样的频度运行这个工作(以毫秒作为单位)。这里,我们设置它为86400000,因此每隔24小时它会被触发一次。你也可以选择设置startDelay属性来延迟工作的第一次执行。我们设置它为3600000,因此在第一次触发之前它会等待1小时。
调度一个cron工作
尽管你可能认为SimpleTriggerBean适用于大多数应用,但它仍然不能满足发送注册报表邮件的需求。正如ScheduledTimerTask,你只能指定工作执行的频度,而不能准确指定它于何时运行。因此,你无法使用SimpleTriggerBean在每天早晨6:00给课程主任发送注册报表邮件。
然而,CronTriggerBean允许你更精确地控制任务的运行时间。如果你对Unix的cron工具很熟悉,则会觉得CronTriggerBean很亲切。你不是定义工作的执行频度,而是指定工作的准确运行时间(和日期)。例如,要在每天早上6:00运行报表工作,可以按照以下方式声明一个CronTriggerBean:
Java代码
<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="reportJob"/>
</property>
<property name="cronExpression">
<value>0 0 6 * * ?</value>
</property>
</bean>
和SimpleTriggerBean一样,jobDetail属性告诉触发器调度哪个工作。这里我们又一次装配了一个reportJob Bean。属性cronExpression告诉触发器何时触发。如果你不熟悉cron,这个属性可能看上去有点神秘,因此让我们进一步考察一下这个属性。
一个cron表达式有至少6个(也可能是7个)由空格分隔的时间元素。从左至右,这些元素的定义如下:
1.秒(0–59)
2.分钟(0–59)
3.小时(0–23)
4.月份中的日期(1–31)
5.月份(1–12或JAN–DEC)
6.星期中的日期(1–7或SUN–SAT)
7.年份(1970–2099)
每一个元素都可以显式地规定一个值(如6),一个区间(如9-12),一个列表(如9,11,13)或一个通配符(如*)。“月份中的日期”和“星期中的日期”这两个元素是互斥的,因此应该通过设置一个问号(?)来表明你不想设置的那个字段。表7.1中显示了一些cron表达式的例子和它们的意义:
表:一些cron表达式的例子
表 达 式 意 义
0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点
0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟
30 0 0 1 1 ? 2012 在2012年1月1日午夜过30秒时
0 0 8-5 ? * MON-FRI 每个工作日的工作时间
对于cronReportTrigger,我们设置cronExpression为0 0 6 * * ?可以把它读作“在任何月份任何日期(不管是星期几)的6时0分0秒执行触发器。”换句话说,这个触发器会在每天早晨6:00执行。
使用CronTriggerBean完全能够满足课程主任的期望了。现在剩下要做的只是启动这个工作了。
启动工作
Spring的SchedulerFactoryBean是Quartz中与TimerFactoryBean等价的类。按照如下方式在Spring配置文件中声明它:
Java代码
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronReportTrigger"/>
</list>
</property>
</bean>
属性triggers接受一组触发器。由于目前只有一个触发器,因此只需简单地装配一个包含cronReportTrigger Bean的一个引用的列表即可。
发表评论
-
java实现Tree
2012-07-10 09:59 880/****************************** ... -
Java正则表达式应用总结
2012-05-25 12:23 1103一、概述 正则表达式是Java处理字符串、文本的重要工具。 ... -
JdbcTemplate与事务
2012-05-17 17:42 1126JdbcTemplate与事务 上例中的JdbcTemplat ... -
Java编程中“为了性能”尽量要做到的一些地方
2012-05-09 17:59 926最近的机器内存又爆满 ... -
jconsole远程监控Java进程
2012-05-07 11:44 1077JDK中的工具jconsole可以很好地监控Java进程及其运 ... -
JMX RMI 访问
2011-09-02 10:46 4522RMI(Remote Method Invocation) R ... -
采用开发框架quartz调度管理Job
2011-07-11 10:03 19601.所需要的第三方包:quartz-1.5.2.jarcom ... -
java类型转换
2011-05-20 17:13 914string和int之间的转换? 字符串转换成数据 ... -
java整型数与网络字节序的 byte[] 数组转换关系
2011-05-05 10:47 3783因工作需要在java和c/c++之间进行socket通信,而 ... -
线程安全总结(二)
2010-11-12 10:34 853站内很多人都问我,所谓线程的“工作内存”到底是个什么东西? ... -
java线程安全总结
2010-11-12 10:33 837java线程安全总结(二 ... -
ora-02289问题解决
2010-10-19 12:35 1647<id name="id" type ... -
JDBC的批处理操作三种方式 pstmt.addBatch();
2010-09-25 15:58 8718SQL批处理是JDBC性能优化的重要武器,经本人研究总结,批处 ... -
log4j输出多个自定义日志文件
2010-05-12 10:28 1517<转>http://hi.baidu.com/ ... -
spring任务调度
2010-04-28 09:48 1410概述 在JDK 1.3以后的版本中,Java通过java.ut ... -
JDK线程池的使用
2010-04-07 16:35 1459一、简介 线程池类为 j ... -
Java文件操作
2010-02-06 15:29 874本文汇集常用文件操作方法,包括文件的建立/检查与删除,目录的建 ... -
[JMX一步步来] 6、Model Bean
2009-12-21 11:46 1213在上一节是用apache的commons-modeler来 ... -
[JMX一步步来] 5、用Apache的commons-modeler来辅助开发JMX
2009-12-21 11:45 1081一、前言 每一个MBean都要有一个接口,比如前面的Hello ... -
[JMX一步步来] 4、动态MBean:DynamicMBean
2009-12-21 11:37 1531一、前言 动态MBean是在运行期才定义它的属性和方法 ...
相关推荐
首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.springframework.scheduling.quartz.JobDetailBean`来创建Job,`org.springframework.scheduling.quartz....
【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...
标题 "spring集成quartz所需文件" 指的是将 Spring 框架与 Quartz 进行整合,以利用 Quartz 的定时任务功能。这种集成使得开发者可以在 Spring 环境下方便地管理调度任务,实现灵活的定时任务逻辑。 在描述中提到 ...
### Spring集成Quartz调度框架详解 #### 一、Quartz调度框架概述 Quartz是一个开源的、成熟的作业调度框架,其主要目标是在Java应用程序中提供简单而强大的作业调度能力。Quartz支持作业按时间间隔(如每天、每周...
Spring集成Quartz是一款高效的任务调度框架,用于在Java应用程序中执行计划、周期性的任务。Quartz与Spring的结合,使得我们可以充分利用Spring的依赖注入(DI)和AOP特性,简化了任务调度的复杂性。 首先,Quartz...
以上就是Spring集成Quartz的基本步骤。通过这种方式,你可以利用Spring的IoC和AOP特性,结合Quartz的调度能力,实现高度可配置的定时任务。在实际项目中,你可能还需要处理任务的并发控制、异常处理、任务的持久化等...
通过Spring集成Quartz,开发者可以方便地在Java应用中实现复杂的定时任务调度。理解Quartz的核心组件、配置方式以及如何与Spring协作,是成功部署和维护定时任务的关键。同时,合理利用CronTrigger的灵活性,可以...
此资源为配置文件示例,Spring集成quartz的配置。
Spring集成Quartz定时任务框架是Java开发中常用的一种任务调度工具,它可以帮助开发者在特定时间执行重复或一次性任务。Quartz作为一个开源的作业调度框架,提供了丰富的API来创建、调度和管理作业。本文将深入探讨...
### Spring集成Quartz定时任务框架介绍 #### 一、引言 在现代JavaEE应用程序开发过程中,定时任务是一项常见的需求。这些任务可能包括但不限于:每天固定时间生成报表、定期清理缓存、定时发送邮件提醒等。传统的...
总的来说,Spring集成Quartz提供了一个强大且灵活的任务调度解决方案,使得开发者可以专注于任务的业务逻辑,而无需关心底层的调度细节。这极大地提高了开发效率,也使得应用的定时任务更加健壮和可控。
1. **Spring与Quartz的整合**:Spring 提供了对Quartz的集成支持,通过`org.springframework.scheduling.quartz`包中的类,如`SchedulerFactoryBean`和`ThreadPoolTaskExecutor`,可以轻松地将Quartz纳入Spring的...
spring集成quartz支持的扩展jar包,spring版本4.0.3
二、Spring 集成 Quartz 1. 添加依赖:在 Maven 或 Gradle 项目中,需要引入 Spring 对 Quartz 的支持。添加相应的依赖库,例如: Maven: ```xml <groupId>org.springframework.boot <artifactId>spring-...
Spring集成Quartz是一种常见的在Java应用中实现定时任务的方式。Quartz是一个强大的、完全开源的作业调度框架,而Spring提供了一种优雅的方式来管理和调度这些定时任务。以下将详细阐述Spring集成Quartz的具体步骤和...
首先,Spring集成Quartz主要通过Spring的TaskExecution和TaskScheduling模块,这使得我们可以利用Spring的依赖注入和AOP特性来更好地管理和控制定时任务。在Spring中配置Quartz,我们通常需要以下几个步骤: 1. ...
标题中的“Spring Quartz 表达式在线生成器”是指一个工具,它可以帮助开发者方便地创建和测试Spring集成Quartz库时所需的定时任务表达式。Quartz是一个强大的、完全开源的作业调度框架,常用于Java应用中执行定时...
总的来说,"spring_quartz" 项目是一个很好的学习和实践 Spring Quartz 的起点,通过该项目,你可以了解如何在实际应用中配置和使用 Spring 集成 Quartz 来实现定时任务。同时,对于想要深入理解 Spring 和定时任务...
Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...