quartz---任务调度小试(多任务)

简介:


quartz---任务调度小试

 

 

        背景

        笔者目前做的项目”jrkj“首页上的信息都是从redis中读取的,每小时更新一次存入redis中,那么问题来了怎么才能让系统每个小时执行一次存入数据的方法呢?这个我用到的事quartz任务调度框架。

 

        配置

        我的项目用的是springMVC,spring+Ejb,EclipseLink,服务器用的是Jboss。由于项目中用到的Ejb所以在写配置文件applicationContext-common.xml的时候还是需要注意一些东西的,详细见配置文件。

<?xml version="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
   xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:util="http://www.springframework.org/schema/util"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:jee="http://www.springframework.org/schema/jee"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/util
   http://www.springframework.org/schema/util/spring-util-3.0.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context-3.0.xsd
   http://www.springframework.org/schema/jee
   http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">
   <context:component-scanbase-package="com.tgb.itoo.jrkj.controller" />
   <util:properties id="evn"
       location="classpath:config/jboss-ejb-client.properties"></util:properties>
   <!-- 启动触发器的配置开始 -->
   <bean name="startQuertz" lazy-init="false"autowire="no"
       class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
       <property name="triggers">
           <list>
                <ref bean="myJobTrigger" />
                <refbean="autoJobTrigger" />
           </list>
       </property>
   </bean>
   <!-- 启动触发器的配置结束 -->
   <!-- 调度的配置开始 -->
   <!-- quartz-2.x的配置 -->
   <bean id="myJobTrigger"
       class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
       <property name="jobDetail">
           <ref bean="myJobDetail" />
       </property>
       <property name="cronExpression">
           <value>0 0 0/1 * * ?</value>
<!--        <value>0 0/1 * * *?</value> -->
       </property>
   </bean>
   <!-- 调度的配置结束 -->
<!-- 调度的配置开始 -->
   <!-- quartz-2.x的配置 -->
   <bean id="autoJobTrigger"
       class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
       <property name="jobDetail">
           <ref bean="autoJobDetail" />
       </property>
       <property name="cronExpression">
           <value>0 0 3 * * ?</value>
       </property>
   </bean>
   <!-- 调度的配置结束 -->
   <!-- job的配置开始 -->
   <bean id="autoJobDetail"
       class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
       <property name="targetObject">
           <ref bean="homePageShowController" />
       </property>
       <property name="targetMethod">
           <value>autoClassEndOrderLog</value>
       </property>
   </bean>
   <!-- job的配置开始 -->
   <bean id="myJobDetail"
       class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
       <property name="targetObject">
           <ref bean="homePageShowController" />
       </property>
       <property name="targetMethod">
           <value>loadHomeData</value>
<!--             <value>run</value>-->
       </property>
   </bean>
   
   <jee:local-slsb id="homePageShowBean"
       jndi-name="java:global/itoo-jrkj-homepageset-ear/itoo-jrkj-homepageset-core-0.0.1-SNAPSHOT/homePageShowBeanImpl!com.tgb.itoo.jrkj.service.HomePageShowBean"
       business-interface="com.tgb.itoo.jrkj.service.HomePageShowBean"/>
   <bean name="homePageShowController"class="com.tgb.itoo.jrkj.controller.HomePageShowController">
       <property name="homePageShowBean"ref="homePageShowBean"></property>
   </bean>
   
</beans>


        配置完成一个之后发现其实还有一些其他的的地方需要配置,所以您会发现上面的配置文件中配置了两个计时器,以及两个任务,如果业务有需要的话,还可以配置更多。

 

        Controller代码如下

@RequestMapping("/loadHomeData")
public voidloadHomeData() {
 
   System.out.println("test");
 
   List<FieldVo>listFieldVos = new ArrayList<FieldVo>();
 
   ……
 
}


       别以为上面配置了,代码写了任务就完成了,jboss还需要配置依赖的jar包。

首先在jboss的modules\org\springframework\spring\snowdrop路径下添加quartz2.2.1.jar(目前我用的版本),然后在该路径下的module.xml中resources节点下添加<resource-rootpath="quartz2.2.1jar"/>

<pre name="code" class="plain"><modulexmlns="urn:jboss:module:1.0"name="org.springframework.spring"slot="snowdrop">
  <resources>
      <resource-root path="spring-aop-4.0.9.RELEASE.jar"/>
       ……………
       <resource-rootpath="spring-messaging-4.0.9.RELEASE.jar"/>
        <resource-rootpath="spring-security-config-3.0.2.RELEASE.jar"/>
        <resource-rootpath="commons-fileupload-1.3.1.jar"/>
        <resource-rootpath="quartz2.2.1jar"/>
       ………..
 
   

         结果

        接下来看看我打印的信息

 

        总之,这样下来在我的项目中是可以正常使用了,但是我想当执行任务调度的时候是不是能够单独的给它新起一个线程,这样会不会更好呢?这块由于这几天项目比较忙一直没弄,总之,看后续更新的博客吧。

 

 

 

 

目录
相关文章
|
Web App开发 数据可视化 数据挖掘
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
|
IDE 编译器 开发工具
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
336 0
|
Java API
DirectByteBuffer内存释放原理
DirectByteBuffer内存释放原理
305 0
|
网络协议 安全 网络安全
无公网IP,公网SSH远程访问家中的树莓派【无公网IP内网穿透】
无公网IP,公网SSH远程访问家中的树莓派【无公网IP内网穿透】
|
搜索推荐 算法 Java
java排序算法:快速排序、归并排序、堆排序等
排序算法:快速排序、归并排序、堆排序等
311 0
|
存储 机器学习/深度学习 Java
《Java8实战》-第五章读书笔记(使用流Stream-02)
付诸实战 在本节中,我们会将迄今学到的关于流的知识付诸实践。我们来看一个不同的领域:执行交易的交易员。你的经理让你为八个查询找到答案。 找出2011年发生的所有交易,并按交易额排序(从低到高)。 交易员都在哪些不同的城市工作过? 查找所有来自于剑桥的交易员,并按姓名排序。
1487 0
|
SQL Java 数据库连接
MPP的API操作数据
代码实例 package oa.epoint.com.mppdb; import java.sql.Connection; import java.
2153 0
|
3天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
5444 29
|
4天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
2240 7
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人

热门文章

最新文章