`
dulinanaaa
  • 浏览: 14994 次
文章分类
社区版块
存档分类
最新评论

JFinal定时任务的配置

 
阅读更多

最近在使用JFinal的框架,之前使用spring框架,直接在配置文件配置下就可以了。所以从网上找了相关例子,整理了一下

1.建一个配置文件job.properties,用作定时配置

job=com.demo.job.JobA
cron=* * 2 * * ?
enable=true
上面是一个定时任务,如果需要多个,从后面展示的定时读取可知,这么配置一下就可以了

bjob=com.demo.job.JobB
bcron=* * 2 * * ?
benable=true

对应执行的任务类的包名配置好,定时时间配置好就行了,一定要把XXXenable设置成true(开启状态)

对于定时设置,参考:quartz 时间配置 就可以了


2.定时执行的类

比如刚才把com.demo.job.JobA弄好了,于是在该类下,代码如下:

public class JobA implements Job{
	private static Logger log = Logger.getLogger(JobA.class);
	
	/**
	 * 执行定时任务
	 */
	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		System.out.println("我被执行了");
	}
	
}
里面具体内容就不用我说了

3.定时类

需要读取刚才写好的job.properties,具体怎么读可以自己改写,我是这么做的(也是改的)

/**
 * 实现作业的调度
 * 
 * @author jerri liu
 */
public class NewQuartzPlugin implements IPlugin {

	private Logger logger = LoggerFactory.getLogger(getClass());
	private SchedulerFactory sf = null;
	private Scheduler sched = null;
	private String config = "job.properties";
	private Properties properties;
	
	public NewQuartzPlugin(String config) {
		this.config = config;
	}
	public NewQuartzPlugin() {
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public boolean start() {
		sf = new StdSchedulerFactory();
		try {
			sched = sf.getScheduler();
		}
		catch (SchedulerException e) {
			new RuntimeException(e);
		}
		loadProperties();
		Enumeration enums = properties.keys();
		while (enums.hasMoreElements()) {
			String key = enums.nextElement() + "";
			if (!key.endsWith("job")) {
				continue;
			}
			String cronKey = key.substring(0, key.indexOf("job")) + "cron";
			String enable = key.substring(0, key.indexOf("job")) + "enable";
			if (isDisableJob(enable)) {
				continue;
			}
			String jobClassName = properties.get(key) + "";
			String jobCronExp = properties.getProperty(cronKey) + "";
			Class clazz;
			try {
				clazz = Class.forName(jobClassName);
			}
			catch (ClassNotFoundException e) {
				throw new RuntimeException(e);
			}
			JobDetail job = newJob(clazz).withIdentity(jobClassName, jobClassName).build();
			CronTrigger trigger = newTrigger().withIdentity(jobClassName, jobClassName).withSchedule(cronSchedule(jobCronExp)).build();
			Date ft = null;
			try {
				ft = sched.scheduleJob(job, trigger);
				sched.start();
			}
			catch (SchedulerException ee) {
				new RuntimeException(ee);
			}
			logger.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression());
		}
		return true;
	}

	private boolean isDisableJob(String enable) {
		return Boolean.valueOf(properties.get(enable) + "") == false;
	}

	private void loadProperties() {
		properties = new Properties();
		InputStream is = NewQuartzPlugin.class.getClassLoader().getResourceAsStream(config);
		try {
			properties.load(is);
		}
		catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	public boolean stop() {
		try {
			sched.shutdown();
		}
		catch (SchedulerException e) {
			logger.error("shutdown error", e);
			return false;
		}
		return true;
	}

	public static void main(String[] args) {
		NewQuartzPlugin plugin = new NewQuartzPlugin();
		plugin.start();
		System.out.println("执行成功!!!");

	}
}

代码很好看懂,就是遍历读这三个配置(可能多个任务),然后根据启动状态分别去执行这几个任务

4.在插件中引入这个定时插件

// quartz插件
NewQuartzPlugin quartzPlugin =  new NewQuartzPlugin("job.properties");
me.add(quartzPlugin);
具体位置如下



这样,定时器就配置好了,我设置的是每天早上2点执行该任务(当然公司需要,展示的空代码,需自己填充)

分享到:
评论

相关推荐

    jfinal_demo.rar

    《JFinal+Quartz 实现定时任务详解》 在IT行业中,实现系统自动化、高效运行是必不可少的需求,其中定时任务的设置尤为重要。JFinal作为一款轻量级的Java Web开发框架,以其简单易用、高性能的特点深受开发者喜爱。...

    jfinal3开发手册

    Cron4jPlugin是JFinal提供的定时任务插件,该章节对它的配置和使用进行了讲解,包括如何使用外部配置文件以及高级用法。 第十章 Validator Validator用于数据校验,本章节介绍了Validator的基本概念、配置以及使用...

    jfinal最新版本3.2文档

    这部分内容讲解了如何配置Cron4jPlugin以及如何创建和管理定时任务。 以上就是JFinal 3.2文档中介绍的主要知识点。文档还包含了其他一些细节部分,例如错误处理、日志记录、安全性考虑等,这些都是构建一个健壮的...

    jfinal 详解()

    2. **插件(Plugin)**:JFinal提供了丰富的插件支持,如ActiveRecord、Shiro安全框架、Quartz定时任务等,大大扩展了框架的功能。 3. **模板引擎(Template Engine)**:支持FreeMarker和Velocity两种模板引擎,方便...

    jfinal所需jar

    4. **模块化设计**:JFinal提供了插件机制,可以通过安装各种插件来扩展功能,如Shiro安全框架、Quartz定时任务等。 5. **灵活的数据绑定**:支持自动映射、注解映射和自定义映射等多种方式,使得数据操作更为便捷。...

    jfinal中文文档

    Cron4jPlugin部分介绍了定时任务的使用,它允许开发者轻松地在JFinal应用中设置和管理定时任务。 总的来说,JFinal文档通过介绍这些知识点,旨在帮助开发者快速掌握JFinal框架的使用方法,并能够有效地应用于实际...

    jfinal小木学堂开发环境搭建视频教程源码(jfinal1.9)

    JFinal采用了AOP(面向切面编程)和Ioc(依赖注入)的设计模式,提供了丰富的插件支持,如Shiro安全框架、Quartz定时任务等,使得开发更加便捷。 二、JFinal 1.9新特性 1. 支持Java 8:JFinal 1.9版本全面兼容Java ...

    jfinal整合activiti

    4. `conf`目录:可能有JFinal的配置文件,如`config.properties`,其中配置了数据库连接和Activiti的相关设置。 5. `activiti`目录:可能包含了流程定义的XML文件和相关资源。 6. `webapp`目录:可能包含了JFinal的...

    Jfinal.zip

    最后,通过Scheduler实例来调度Job和Trigger,实现定时任务的执行。这样,无论是周期性的数据备份,还是按需触发的业务逻辑,都可以轻松管理。 总结,JFinal结合Druid、Redis和Quartz,可以构建出一个具备高性能、...

    jfinal-3.3-all.rar

    5. **Plugin模块**:JFinal的插件系统使得扩展功能变得简单,如Shiro用于权限控制,Quartz用于定时任务。 五、JFinal 3.3 开发实战 1. **增删改查操作**:利用ActiveRecord插件,可以轻松实现对数据库的CRUD操作。 ...

    jfinal-4.0-all.zip

    3. 强大的插件支持:JFinal提供了丰富的插件,如Shiro安全插件、Quartz定时任务插件等,方便开发者进行功能扩展。 4. 数据库操作:JFinal的ActiveRecord模式,使得数据库操作变得简单直观,无需编写SQL语句,支持ORM...

    jfinal使用文档

    JFinal是一个Java语言开发的敏捷、高效、强大的Web框架,本篇文档详细介绍...这部分内容有助于实现定时任务。 以上就是JFinal使用文档的主要知识点,涵盖了从入门到进阶的各个方面,希望对学习和使用JFinal有所帮助。

    JFinal开发的jar包

    - **插件扩展**:JFinal提供了大量的插件,如Shiro安全控制、Quartz定时任务、Email发送等,通过简单配置即可使用,大大丰富了框架的功能。 5. **JFinal的特点** - **轻量级**:JFinal体积小,启动快,无需其他...

    JFinal资源

    - JFinal的插件丰富,例如Shiro安全框架插件、Swagger API文档生成插件、Quartz定时任务插件等,可以帮助开发者快速实现特定功能。 7. **实际应用场景** - JFinal适用于中小型Web项目,尤其适合个人开发者或者小...

    jfinal-web

    - **任务调度**:支持定时任务的创建和管理,如数据同步、报表生成等。 - **接口文档**:生成API文档,方便开发人员理解和使用系统提供的接口。 综上所述,【jfinal-web】项目利用了Java的JFinal框架作为后端基础,...

    Jfinal3.0文档+demo

    通过阅读此文档,开发者可以了解到Jfinal3.0如何实现MVC模式,如何进行路由配置,以及如何利用其强大的插件系统扩展功能,如Shiro安全控制、Quartz定时任务等。 Jfinal3.0的一大亮点是其对性能的优化。例如,它采用...

    jfinal-3.6-all

    3. **插件生态**:JFinal 3.6提供了丰富的插件支持,如Shiro安全框架、MyBatis持久层框架、Quartz定时任务等,极大地扩展了框架的应用范围。 4. **数据库操作**:JFinal 3.6内置了ActiveRecord模式,提供了便捷的...

    jfinal-2.1_demo.zip

    5. **插件系统**:JFinal拥有丰富的插件,如Shiro安全框架、Quartz定时任务等,可以快速扩展功能。 6. **模板引擎**:JFinal内置了FreeMarker模板引擎,支持自定义模板语言,方便视图渲染。 通过对"jfinal-2.1_demo...

    jfinal-2.0_demo_for_jsp.zip

    3. **插件丰富**:JFinal拥有丰富的插件支持,如Shiro安全框架、MyBatis持久层框架、Quartz定时任务等,极大地丰富了开发功能。 4. **高性能**:JFinal采用了基于AOP的拦截器链设计,使得其性能表现优异,能够满足...

    jfinaldemo

    6. **插件(Plugins)**: JFinal有丰富的插件体系,如Shiro安全控制、Quartz定时任务等,这些插件可以帮助开发者快速实现特定功能,提高开发效率。 通过“jfinaldemo”实例,你可以逐步学习并实践这些步骤,理解...

Global site tag (gtag.js) - Google Analytics