Spring+Quartz

追新,都使用了最新的版本,Spring
4.0.3,Quartz:2.2.1,使用maven构建,父类的pom.xml(里面有几个与示例无关的依赖及配置,没删除):


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.garfield.garserver</groupId>
<artifactId>garserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
<module>service</module>
<module>entity</module>
</modules>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.10</junit.version>
<spring.version>4.0.3.RELEASE</spring.version>
<garserver.version>0.0.1-SNAPSHOT</garserver.version>
</properties>

<dependencyManagement>
<dependencies>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>

</dependencies>
</dependencyManagement>

<build>
<defaultGoal>compile</defaultGoal>

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding> <!-- “编码 GBK 的不可映射字符”问题的解决 -->
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<outputDirectory>${project.build.directory}</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

</plugins>

<resources>
<!--打包进XML等文件,排除java及版本控制文件 -->
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
<exclude>**/.svn/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>

</project>

子项目的pom.xml:


<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.garfield.garserver</groupId>
<artifactId>garserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>service</artifactId>
<name>service</name>
<url>http://maven.apache.org</url>

<dependencies>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-beta9</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-beta9</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>

<dependency>
<groupId>com.garfield.garserver</groupId>
<artifactId>entity</artifactId>
<version>${garserver.version}</version>
</dependency>

</dependencies>

</project>

需要注意的是,示例需要spring的spring-context-support和spring-tx。

Spring配置文件:


<?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.xsd">

<!-- 工作的bean -->
<bean id="myJob" class="com.garfield.quartz.QuartzJob" />

<!-- job的配置开始 -->
<bean id="myJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="myJob" />
</property>
<property name="targetMethod">
<value>work</value>
</property>
</bean>
<!-- job的配置结束 -->

<!-- 调度的配置开始 -->
<bean id="crontestJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="myJobDetail" />
</property>
<property name="cronExpression">
<value>10 0/1 * * * ?</value> <!-- Cron表达式“10 */1 * * * ?”意为:从10秒开始,每1分钟执行一次。 -->
</property>
</bean>
<!-- 调度的配置结束 -->

<!-- 启动触发器的配置开始 -->
<bean name="startQuertz" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="crontestJobTrigger" />

</list>
</property>
</bean>
<!-- 启动触发器的配置结束 -->

</beans>

Quartz的类:


package com.garfield.quartz;

import java.util.Date;
import java.util.Scanner;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class QuartzJob{

private static String[] configLocations = new String[] { "com/garfield/config/servicebeans.xml" };

public void work()
{
System.out.println("Quartz的任务调度!!!"+(new Date()).toString());
}

/**
* @param args
*/
public static void main(String[] args)
{
System.out.println("Test start.");
ApplicationContext ctx=new ClassPathXmlApplicationContext(configLocations);
//如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
QuartzJob qj=(QuartzJob)ctx.getBean("myJob");
//qj.work();
System.out.println("请输入信息:");
Scanner input=new Scanner(System.in);
int x=input.nextInt();
System.out.println(x);
System.out.print("Test end..");

}

}

在这里,为了测试方便,将启动写在了main中,为了不使main退出,使用了一个无实际意义的等待读取输入,只是为了使程序运行不退出,好了,运行这个程序,Quartz可以正常工作了!

 

时间: 2024-08-11 09:57:27

Spring+Quartz的相关文章

Tomcat+Spring+Quartz Restart or shutdown error

环境描述 Intellij Idea 14.1.7 Tomcat 6.0.48 Spring 2.5.6.SEC01 Quartz 1.8.5 问题描述 在 Intellij Idea 中首次可以正常启动 Tomcat 和 Web 应用,但是在 Intellij Idea 中执行重启的时候,控制台中就会包以下的错误,导致无法正常重启或者关闭,必须要启动任务管理器, 强制杀调 java.exe 进程才行. 严重: The web application [] appears to have sta

【微信】微信获取TOKEN,以及储存TOKEN方法,Spring quartz让Token永不过期

官网说明 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 公众平台的API调用所需的access_token的使用及生成方式说明: 1.为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器.而其他业务逻辑服务器所

Spring+quartz 实现定时任务job集群配置

为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真实结果的3倍,那对银行来说是无法想象的,完全不可接受. 集群定时任务工作原理 所以为了解决以上问题,每个server把将要及正在运行的job所有状态都即时同步到中央数据库,然后再次触发调用时从数据库中分析是否已有别的server正在运行相同job (同名同定时时间点的job属于相当job),如果相同

spring+quartz(各种版本兼容性问题)

踩过的坑 遇到CronTriggerFactoryBean class notfound 原因是使用3.1以下的版本,我使用的是3.06发现spring-context-support jar文件下面,压根没有这个类,改成org.springframework.scheduling.quartz.CronTriggerBean可以. 遇到JobDetail class notfound 原因是使用2.0以上版本,因为这些版本中,JobDetail 是interface,具体原因的话,可能作者觉得

atititt.java定时任务框架选型Spring Quartz 注解总结

atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增加context,task命名空间xml: 2 2.2. 增加xsi:schemaLocation valide 2 2.3. 我们的task任务扫描注解in spr.xml 2 2.4. 设置运行方法 3 2.5. 设置输出日志 3 3. 运行测试sprX走ok兰. 4 4. Quartz Sch

spring Quartz基于配置文件和注解的实现

这里仅仅是做简单的记录怎样实现. 一.基于配置文件的实现 ①编写须要调度的类 package com.study; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; //@Component public class QuartzJob { public QuartzJob(){ System.out.println("Quart

Spring Quartz结合Spring mail定期发送邮件

文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework

spring quartz 分布式任务计划

通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz_calendars` */ DROP TABLE IF EXISTS `qrtz_calendars`; CREATE TABLE `qrtz_calendars` ( `SCHED_NAME` varchar(120) NOT NULL, `CALENDAR_NAME` varchar(200) NOT NULL, `CALENDAR` blo

spring+quartz报错:Table &#39;BANKSTEELERP_OLD.QRTZ_TRIGGERS&#39; doesn&#39;t exist

spring3.2.8 + quartz2.2.1配置到application.xml中 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'startQuertz' defined in class path resource [application.xml]: Invocation of init method failed; nested exception is

Spring+quartz 动态任务调度

需求是这样的:系统中会有很多的执行时间,三个或者四个这样,不确定,以后可能是五个!当用户在页面添加执行时间时,我们后台也要对应执行用户添加的时间. 数据库设计: DROP TABLE IF EXISTS `test_time_task`; CREATE TABLE `test_time_task` ( `status` int(11) DEFAULT NULL COMMENT '状态:0为正常,1为禁用', `job` varchar(255) CHARACTER SET utf8 DEFAUL