jfianl 定时任务的操作步骤

1.首先导入Quartz的jar包
2.编写一个QuartzPlugin类代码如下

package config;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.apache.log4j.Logger;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

import com.jfinal.plugin.IPlugin;

public class QuartzPlugin implements IPlugin {

	private final Logger logger = Logger.getLogger(QuartzPlugin.class);

	private static final String JOB = "job";

	private String config = "job.properties";

	private Properties properties;

	public QuartzPlugin(String config) {
		this.config = config;
	}
	public QuartzPlugin() {
	}
	private SchedulerFactory schedulerFactory;
	private Scheduler scheduler;

	@SuppressWarnings("unchecked")
	public boolean start() {
		try {
			loadProperties();
		} catch (IOException e) {
			logger.error(e.getMessage());
			return false;
		}
		if (properties == null) {
			return false;
		}
		Map<String, Object> jobMap = new HashMap<String, Object>();
		Enumeration<Object> enums = properties.keys();
		while (enums.hasMoreElements()) {
			String key = enums.nextElement() + "";
			if (!key.endsWith(JOB) || !isTrue(getJobKey(key, "enable"))) {
				continue;
			}
			String jobName = key.substring(0, key.lastIndexOf("."));
			if (!jobMap.containsKey(jobName)) {
				Map<String, String> jobData = new HashMap<String, String>();
				jobData.put("jobClassName", properties.getProperty(jobName + ".job") + "");
				jobData.put("jobName", jobName);
				jobData.put("jobCronExp", properties.getProperty(jobName + ".cron") + "");
				jobData.put("jobGroup", properties.getProperty(jobName + ".group") + "");
				jobMap.put(jobName, jobData);
			}
		}
		for (String mapKey : jobMap.keySet()) {
			Map<String, String> jobData = (Map<String, String>) jobMap.get(mapKey);
			String jobClassName = jobData.get("jobClassName");
			String jobName = jobData.get("jobName");
			String jobCronExp = jobData.get("jobCronExp");
			String jobGroup = jobData.get("jobGroup");
			Class<? extends Job> jobClass = null;
			try {
				jobClass = (Class<? extends Job>) Class.forName(jobClassName);
			} catch (ClassNotFoundException e) {
				logger.error(e.getMessage());
				return false;
			}
			JobDetail job = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroup).build();
			CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger", jobGroup)
					.withSchedule(CronScheduleBuilder.cronSchedule(jobCronExp)).build();
			try {
				schedulerFactory = new StdSchedulerFactory();
				try {
					scheduler = schedulerFactory.getScheduler();
				} catch (SchedulerException e) {
					logger.error(e.getMessage());
					return false;
				}
				if (scheduler == null) {
					logger.error("scheduler is null");
					return false;
				}
				scheduler.scheduleJob(job, trigger);
				scheduler.start();
			} catch (SchedulerException e) {
				logger.error(e.getMessage());
				return false;
			}
		}
		return true;
	}

	public boolean stop() {
		try {
			scheduler.shutdown();
		} catch (SchedulerException e) {
			logger.error(e.getMessage());
			return false;
		}
		return true;
	}

	private void loadProperties() throws IOException {
		properties = new Properties();
		InputStream is = QuartzPlugin.class.getClassLoader().getResourceAsStream(config);
		properties.load(is);
	}

	private String getJobKey(String str, String type, String defaultValue) {
		String key = getJobKey(str, type);
		if (key == null || "".equals(key.trim()))
			return defaultValue;
		return key;

	}

	private String getJobKey(String str, String type) {
		return str.substring(0, str.lastIndexOf(JOB)) + type;
	}

	private boolean isTrue(String key) {
		Object enable = properties.get(key);
		if (enable != null && "false".equalsIgnoreCase((enable + "").trim())) {
			return false;
		}
		return true;
	}
}

3.然后添加配置文件:在rec文件下添加一个job.properties文件内容如下

# s m h d m w(?) y(?)   second minute hour date month week year //这是时间格式

# partyQuart job at 00:01 all day
partyQuart.job=com.wlkj.common.config.StatisticExecutor        //要执行的定时任务的类的路径
partyQuart.cron=0 1 0 ? * *                                                        //设置定时时间如每分钟执行一次
partyQuart.enable=true                                                             //不知道      
partyQuart.group=1                                                                   //定时组,如果有多个就要一次增加

# orgcheck job at 01:00 
orgcheck.job=com.wlkj.common.config.OrgQuarter
orgcheck.cron=0 0 1 * * ? 
orgcheck.enable=true
orgcheck.group=2

# partyIntegral job at 00:01 all day
partyIntegral.job=com.wlkj.common.config.PartyIntegralExecutor
partyIntegral.cron=0 1 0 ? * *
partyIntegral.enable=true
partyIntegral.group=3

# partyMonth job at 00:01 all day
partyMonth.job=com.wlkj.common.config.PartyMonthStatisticExecutor
partyMonth.cron=0 1 0 ? * *
partyMonth.enable=true
partyMonth.group=4

4.在congfig配置类中要读取job.properties文件

public void configPlugin(Plugins me) {

// 定时任务插件
			QuartzPlugin plugin = new QuartzPlugin("job1.properties");
			me.add(plugin);

}

5.接下来我们要写一个定时任务类,定时类要继承job类
如:

public class OrgQGatP implements Job{
	
	
	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		
		System.out.println("开始执行定时任务");
		}

去quartz官网下载最新的定时任务jar包(http://www.quartz-scheduler.org/)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值