@Override public void execute(JobExecutionContext arg0) throws JobExecutionException { LOGGER.info("start to work."); } } import java.text.ParseException; import java.util.Date;import org.apache.log4j.Logger; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.impl.StdSchedulerFactory;public class QuartzTest { private static final Logger LOGGER = Logger.getLogger(QuartzTest.class); public void runScheduler(String cronExpression) { Scheduler scheduler = null; try { // Create a default instance of the Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start(); LOGGER.info("Scheduler was started at " + new Date()); // Create the JobDetail JobDetail jobDetail = new JobDetail("PrintInfoJob", Scheduler.DEFAULT_GROUP, SimpleJob.class); // Create a CronTrigger try { CronTrigger trigger = new CronTrigger("CronTrigger", null, cronExpression); scheduler.scheduleJob(jobDetail, trigger); } catch (ParseException ex) { LOGGER.error("Error parsing cron expr", ex); } } catch (SchedulerException ex) { LOGGER.error(ex); } } /** * @param args */ public static void main(String[] args) { String cronExpression = "0/5 * * * * ? *"; QuartzTest test = new QuartzTest(); test.runScheduler(cronExpression); }}
private final static Logger log = Logger.getLogger(SpmApp.class); public static final String[] APPLICATION_CONTEXT_FILES = new String[] { "applicationContext.xml" }; // 加载配置文件 初始化启动 public static ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(APPLICATION_CONTEXT_FILES);
package com.vista.quartz;import java.io.File; import java.io.FileFilter; public class FileExtensionFileFilter implements FileFilter { private String extension;//文件后缀 public FileExtensionFileFilter(String extension) { this.extension = extension; } public boolean accept(File file) {//只接受指定后缀的文件 // Lowercase the filename for easier comparison String lCaseFilename = file.getName().toLowerCase();//小写化 return (file.isFile() &&(lCaseFilename.indexOf(extension) > 0 )) ? true : false ; } } package com.vista.quartz;import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.JobDetail;import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger;import org.quartz.TriggerUtils;import org.quartz.impl.StdSchedulerFactory;public class SimpleScheduler { static Log logger = LogFactory.getLog(SimpleScheduler.class); public static void main(String[] args) { SimpleScheduler simple = new SimpleScheduler(); try { // Create a Scheduler and schedule the Job Scheduler scheduler = simple.createScheduler(); simple.scheduleJob(scheduler); // Start the Scheduler running scheduler.start(); logger.info( "Scheduler started at " + new Date()); } catch (SchedulerException ex) { logger.error(ex); } } public Scheduler createScheduler() throws SchedulerException {//创建调度器 return StdSchedulerFactory.getDefaultScheduler(); } //Create and Schedule a ScanDirectoryJob with the Scheduler private void scheduleJob(Scheduler scheduler) throws SchedulerException { // Create a JobDetail for the Job JobDetail jobDetail = new JobDetail("ScanDirectory",Scheduler.DEFAULT_GROUP,ScanDirectoryJob.class); // Configure the directory to scan jobDetail.getJobDataMap().put("SCAN_DIR","D:\\Tomcat\\conf"); //set the JobDataMap that is associated with the Job. // Create a trigger that fires every 10 seconds, forever Trigger trigger = TriggerUtils.makeSecondlyTrigger(10);//每10秒触发一次 trigger.setName("scanTrigger"); // Start the trigger firing from now trigger.setStartTime(new Date());//设置第一次触发时间 // Associate the trigger with the job in the scheduler scheduler.scheduleJob(jobDetail, trigger); } } package com.vista.quartz;import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.JobDetail;import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger;import org.quartz.TriggerUtils;import org.quartz.impl.StdSchedulerFactory;public class SimpleScheduler { static Log logger = LogFactory.getLog(SimpleScheduler.class); public static void main(String[] args) { SimpleScheduler simple = new SimpleScheduler(); try { // Create a Scheduler and schedule the Job Scheduler scheduler = simple.createScheduler(); // Jobs can be scheduled after Scheduler is running scheduler.start(); logger.info("Scheduler started at " + new Date()); // Schedule the first Job simple.scheduleJob(scheduler, "ScanDirectory1",ScanDirectoryJob.class,"D:\\conf1", 10); // Schedule the second Job simple.scheduleJob(scheduler, "ScanDirectory2",ScanDirectoryJob.class,"D:\\conf2 ", 15); } catch (SchedulerException ex) { logger.error(ex); } } public Scheduler createScheduler() throws SchedulerException {//创建调度器 return StdSchedulerFactory.getDefaultScheduler(); } private void scheduleJob(Scheduler scheduler, String jobName,Class jobClass, String scanDir, int scanInterval) throws SchedulerException { // Create a JobDetail for the Job JobDetail jobDetail = new JobDetail(jobName,Scheduler.DEFAULT_GROUP, jobClass); // Configure the directory to scan jobDetail.getJobDataMap().put("SCAN_DIR", scanDir); // Trigger that repeats every "scanInterval" secs forever Trigger trigger = TriggerUtils.makeSecondlyTrigger(scanInterval); trigger.setName(jobName + "-Trigger"); // Start the trigger firing from now trigger.setStartTime(new Date()); // Associate the trigger with the job in the scheduler scheduler.scheduleJob(jobDetail, trigger); } }
java有自带类Timer可以处理简单的定时任务。
网上也有很多框架提供这种支持,比如2楼所说的Quartz
java有自带类Timer可以处理简单的定时任务。
网上也有很多框架提供这种支持,比如2楼所说的Quartz他要的是现成的代码,不是解决的方案。
采用的 quartz-all-1.6.5.jarimport org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;public class SimpleJob implements Job {
private static final Logger LOGGER = Logger.getLogger(SimpleJob.class);
@Override
public void execute(JobExecutionContext arg0)
throws JobExecutionException {
LOGGER.info("start to work."); }
}
import java.text.ParseException;
import java.util.Date;import org.apache.log4j.Logger;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;public class QuartzTest {
private static final Logger LOGGER = Logger.getLogger(QuartzTest.class); public void runScheduler(String cronExpression) {
Scheduler scheduler = null; try {
// Create a default instance of the Scheduler
scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
LOGGER.info("Scheduler was started at " + new Date()); // Create the JobDetail
JobDetail jobDetail = new JobDetail("PrintInfoJob",
Scheduler.DEFAULT_GROUP, SimpleJob.class);
// Create a CronTrigger
try {
CronTrigger trigger = new CronTrigger("CronTrigger", null,
cronExpression); scheduler.scheduleJob(jobDetail, trigger);
} catch (ParseException ex) {
LOGGER.error("Error parsing cron expr", ex); } } catch (SchedulerException ex) {
LOGGER.error(ex);
}
} /**
* @param args
*/
public static void main(String[] args) { String cronExpression = "0/5 * * * * ? *";
QuartzTest test = new QuartzTest();
test.runScheduler(cronExpression);
}}
private final static Logger log = Logger.getLogger(SpmApp.class);
public static final String[] APPLICATION_CONTEXT_FILES = new String[] { "applicationContext.xml" }; // 加载配置文件 初始化启动
public static ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(APPLICATION_CONTEXT_FILES);
/**
*
* @Title: main
* @Description: 主方法
* @param @param args
* @param @throws UnknownHostException 设定文件
* @return void 返回类型
* @throws
*/
public static void main(String[] args) throws UnknownHostException {
// 启动定时任务
// Timer timer1 = new Timer();
// Timer timer2 = new Timer();
// EnterCardTimerTask enterTimerTask = new EnterCardTimerTask();
// OutCardTimerTask outTimerTask = new OutCardTimerTask();
// timer1.schedule(enterTimerTask, 100, 3000);
// timer2.schedule(outTimerTask, 100, 10000);
// 配置、启动 webservice
String ip = SpmPropertie.getProperty("ip");// 获得本机IP
String port = SpmPropertie.getProperty("port", "8086"); String address = "http://" + ip + ":" + port + "/services/SpmWebService"; Endpoint.publish(address, new MiddlewareWebService());
log.info("Web Service(" + address + "?wsdl) 已启动.");
}<bean id="missionJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="cn.org.timespace.middleware.Mission"></property>
</bean>
<bean id="enterTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="missionJob"></property>
<property name="cronExpression">
<value>0/2 * * * * ? *</value>
</property>
</bean>
<bean id="scheduledFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="enterTriggerBean"/>
</list>
</property>
</bean>
已经解决
package com.vista.quartz;import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.JobDetail;import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger;import org.quartz.TriggerUtils;import org.quartz.impl.StdSchedulerFactory;public class SimpleScheduler { static Log logger = LogFactory.getLog(SimpleScheduler.class); public static void main(String[] args) { SimpleScheduler simple = new SimpleScheduler(); try { // Create a Scheduler and schedule the Job Scheduler scheduler = simple.createScheduler(); simple.scheduleJob(scheduler); // Start the Scheduler running scheduler.start(); logger.info( "Scheduler started at " + new Date()); } catch (SchedulerException ex) { logger.error(ex); } } public Scheduler createScheduler() throws SchedulerException {//创建调度器 return StdSchedulerFactory.getDefaultScheduler(); } //Create and Schedule a ScanDirectoryJob with the Scheduler private void scheduleJob(Scheduler scheduler) throws SchedulerException { // Create a JobDetail for the Job JobDetail jobDetail = new JobDetail("ScanDirectory",Scheduler.DEFAULT_GROUP,ScanDirectoryJob.class); // Configure the directory to scan jobDetail.getJobDataMap().put("SCAN_DIR","D:\\Tomcat\\conf"); //set the JobDataMap that is associated with the Job. // Create a trigger that fires every 10 seconds, forever Trigger trigger = TriggerUtils.makeSecondlyTrigger(10);//每10秒触发一次 trigger.setName("scanTrigger"); // Start the trigger firing from now trigger.setStartTime(new Date());//设置第一次触发时间 // Associate the trigger with the job in the scheduler scheduler.scheduleJob(jobDetail, trigger); } }
package com.vista.quartz;import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.JobDetail;import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger;import org.quartz.TriggerUtils;import org.quartz.impl.StdSchedulerFactory;public class SimpleScheduler { static Log logger = LogFactory.getLog(SimpleScheduler.class); public static void main(String[] args) { SimpleScheduler simple = new SimpleScheduler(); try { // Create a Scheduler and schedule the Job Scheduler scheduler = simple.createScheduler(); // Jobs can be scheduled after Scheduler is running scheduler.start(); logger.info("Scheduler started at " + new Date()); // Schedule the first Job simple.scheduleJob(scheduler, "ScanDirectory1",ScanDirectoryJob.class,"D:\\conf1", 10); // Schedule the second Job simple.scheduleJob(scheduler, "ScanDirectory2",ScanDirectoryJob.class,"D:\\conf2 ", 15); } catch (SchedulerException ex) { logger.error(ex); } } public Scheduler createScheduler() throws SchedulerException {//创建调度器 return StdSchedulerFactory.getDefaultScheduler(); } private void scheduleJob(Scheduler scheduler, String jobName,Class jobClass, String scanDir, int scanInterval) throws SchedulerException { // Create a JobDetail for the Job JobDetail jobDetail = new JobDetail(jobName,Scheduler.DEFAULT_GROUP, jobClass); // Configure the directory to scan jobDetail.getJobDataMap().put("SCAN_DIR", scanDir); // Trigger that repeats every "scanInterval" secs forever Trigger trigger = TriggerUtils.makeSecondlyTrigger(scanInterval); trigger.setName(jobName + "-Trigger"); // Start the trigger firing from now trigger.setStartTime(new Date()); // Associate the trigger with the job in the scheduler scheduler.scheduleJob(jobDetail, trigger); } }