`

Java监听器的添加以实现执行定时器任务

    博客分类:
  • Java
阅读更多

1、在WEB.xml添加定时器的执行类配置

 

	<listener>
		<listener-class>
			com.cpic.ryx.servlet.TimerListener
		</listener-class>
	</listener>

 

2、监听器类的配置

 

public class TimerListener extends HttpServlet implements
		ServletContextListener {
	private static final long serialVersionUID = 200601509800003l;

	private static Logger log = Logger.getLogger(TimerListener.class);

	/**
	 * 初始化定时任务线程
	 * 
	 * @param sce
	 *            ServletContextEvent
	 */
	public void contextInitialized(ServletContextEvent sce) {
		log.info("TimerListener[ServletContextListener] initializing...");
		try {
			BatchMain.getInstance().startTask();
		} catch (Exception e) {
					}
		log.info("...TimerListener[ServletContextListener] initialized");
	}

	/**
	 * 销毁定时任务线程
	 * 
	 * @param sce
	 *            ServletContextEvent
	 */
	public void contextDestroyed(ServletContextEvent sce) {
		log.info("TimerListener[ServletContextListener] destoring...");
		BatchMain.getInstance().destoryTask();
		log.info("...TimerListener[ServletContextListener] destoried.");
	}
}

 3、 执行类的配置

 

public class BatchMain {
	private static Logger log = Logger.getLogger(BatchMain.class);

	private static BatchMain instance;

	// 任务调度定时器
	private Timer timer;

	private Timer billTimer;

	private BatchMain() {
		timer = new Timer();
		billTimer = new Timer();
	}

	public synchronized static BatchMain getInstance() {
		if (instance == null) {
			instance = new BatchMain();
		}
		return instance;
	}

	/**
	 * 启动指定任务线程
	 * 
	 */
	public void startTask() {

				TimerTask schemeCancelTask = new SchemeCancelTask();
				schemeTimer.schedule(schemeCancelTask, 1000, schemeCancelPeriod * 1000L);
			
			log.info("...完成增加方案自动作废任务[schemeCancelPeriod:"
					+ schemeCancelPeriod + " s].");

		
	}

	/**
	 * 启动指定任务线程
	 * 
	 */
	public void destoryTask() {
		log.info("BatchMain startTask canceling...");
		timer.cancel();
		billTimer.cancel();
		log.info("...BatchMain startTask canceled");
	}
}

 

 

4、定时器任务类的配置:

 

public class SchemeCancelTask extends TimerTask {

	private static Logger log = Logger.getLogger(SchemeCancelTask.class);

	public SchemeCancelTask() {

	}

	public void run() {

		String taskSchemeMaxTime = ConfigUtil
				.getConfigValue(ConfigUtil.TASK_SCHEME_MAX_TIME);
		String schemeStartHour = ConfigUtil
				.getConfigValue(ConfigUtil.TASK_SCHEME_STARTHOUR);
		String schemeStartMinute = ConfigUtil
				.getConfigValue(ConfigUtil.TASK_SCHEME_STARTMINUTE);
		String schemeEndHour = ConfigUtil
				.getConfigValue(ConfigUtil.TASK_SCHEME_END_HOUR);
		String schemeEndMinute = ConfigUtil
				.getConfigValue(ConfigUtil.TASK_SCHEME_END_MINUTE);

		Calendar c = Calendar.getInstance();

		c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(schemeStartHour));
		c.set(Calendar.MINUTE, Integer.parseInt(schemeStartMinute));
		Date schemeStartDate = new Date(c.getTimeInMillis());

		c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(schemeEndHour));
		c.set(Calendar.MINUTE, Integer.parseInt(schemeEndMinute));
		Date schemeEndDate = new Date(c.getTimeInMillis());

		Date currentDate = new Date();

		// 在规定的时间段内运行
		if (currentDate.after(schemeStartDate) && currentDate.before(schemeEndDate)) {
			
			log.info("方案自动作废线程开始执行.....................");
			log.info("方案自动作废开始时间:"
					+ DateUtil.toString(schemeStartDate,
							DateUtil.DATE_FORMAT_DATETIME)
					+ "方案自动作废结束时间:"
					+ DateUtil.toString(schemeEndDate,
							DateUtil.DATE_FORMAT_DATETIME));
			log.info("....方案作废自动线程自动执行结束");

		}
	}
	
}

 

分享到:
评论

相关推荐

    java轻松实现—定时任务

    总结来说,Java实现定时任务有多种方法,其中在Web应用中使用监听器和`TimerTask`是一种常见的方式。这种方式易于理解和实现,但可能不适合复杂的定时需求。对于更复杂的需求,可以考虑使用`...

    Java后台定时器代码

    在提供的文件名中,`WeatherTimerTask.java`可能包含了实现天气数据更新的定时任务,而`WeatherTimerTaskListener.java`可能是一个监听器,用于监听某些事件并触发任务的执行。在实际项目中,监听器可以是基于事件...

    Java定时器

    Java定时器是Java平台中一个强大而灵活的工具,能够帮助开发者轻松地实现各种定时任务的需求。通过合理地利用`java.util.Timer`和`java.util.TimerTask`类,可以构建出高效、可靠的定时任务系统。无论是桌面应用、...

    JAVA定时器word文档

    在Java编程中,定时器(java.util.Timer)是一个非常实用的工具,它允许开发者安排在未来某一时刻或以特定周期执行任务。这个类提供了计划执行任务的能力,这些任务通常是通过继承TimerTask类的自定义类来实现的。在...

    java实现的数字式定时器

    在启动定时器后,可能需要在一个单独的线程中执行计时任务,以避免阻塞主线程。 5. **数据格式与时间处理**: 在显示剩余时间时,需要将总分钟数转换为小时、分钟和秒的格式。这涉及到对时间数据的处理,可以使用`...

    java后台定时器

    Java标准库并未提供内置的定时任务监听器,但可以通过扩展`TimerTask`并添加自定义事件来实现监听功能。例如,可以在`TimerTask`的`run`方法中触发事件,并在其他类中注册监听器来响应这些事件。 7. **并发与线程...

    定时器的原理及使用

    在 `web.xml` 配置文件中,我们需要添加监听器的配置,这样在服务器启动时会自动加载并初始化 `OnLineListener` 类,从而启动定时器。配置如下: ```xml &lt;!-- 监听器配置开始 --&gt; &lt;listener-class&gt;...

    Java_Web定时器使用

    为了实现这样的需求,可以利用`java.util.Timer`配合Servlet监听器(`ServletContextListener`)来实现定时任务的自动启动与执行。 ##### 3.2 使用步骤 1. **创建定时器**:在Web应用启动时创建一个`Timer`实例。 2...

    java定时器

    总结起来,Java定时器在Web应用中的使用通常涉及到创建一个实现了`ServletContextListener`的类,通过监听器来控制定时器的生命周期,以及创建自定义的`TimerTask`子类来定义需要执行的任务。这种设计模式使得定时...

    Java-Web定时器使用.doc

    Java Web定时器是一种在Web应用程序中定期执行特定任务的机制,它主要依赖于Java的`java.util.Timer`类和`java.util.TimerTask`类。在Java Web开发中,定时任务通常用于后台数据处理、定时备份、日志清理等场景。...

    在Java Web项目中添加定时任务的方法

    在 Java Web 程序中加入定时任务是非常重要的,通常我们需要在特定的时间点执行某些任务,以实现自动化操作。这里介绍两种方法来实现定时任务:使用监听器注入和使用 Spring 注解 @Scheduled 注入。 一、使用监听器...

    JAVA自动执行任务[文].pdf

    总之,Java通过Servlet监听器和定时器提供了一种优雅的方式来实现在Web应用程序中自动化执行任务。这种机制允许我们在Web应用启动时自动启动定时任务,并在Web应用关闭时安全地清理资源。通过自定义的`TimerTask`,...

    java 定时器

    - **定时器监听器**:为了实现在Web应用启动时自动启动定时器,可以使用Servlet监听器。 ```java public class TimerListener implements ServletContextListener { private Timer timer; private SampleTask ...

    定时任务quartz实现分组串行并行动态配置

    此外,还可以自定义Trigger监听器,检查当前运行的Job,只有当特定Job组内没有正在执行的任务时,才允许新任务开始。 4. **并行执行**:默认情况下,Quartz允许多个Job并行执行,只要它们不在同一组或满足并行执行...

    java实现备忘时钟

    我们需要为按钮添加动作监听器,比如`ActionListener`。当用户点击按钮时,对应的监听器方法会被调用,执行相应的操作,如添加备忘到列表或触发提醒。 为了保存和加载备忘录,我们可以使用文件系统或数据库。对于...

    quartz和spring整合实现的定时器

    Quartz和Spring的整合是Java应用中常见的定时任务管理方式,尤其在...在实际项目中,还可以根据需求进行更复杂的配置,例如添加JobListener来监听Job的执行状态,或者使用ThreadPoolScheduler来处理并发执行的任务等。

    spring定时器的动态设置

    在Spring中,我们可以使用`@EnableScheduling`注解来开启定时任务的配置,这个注解通常会添加到一个配置类上,这样Spring就会自动创建一个后台任务调度器,来执行所有标记了`@Scheduled`的方法。 `@Scheduled`注解...

    java实现监视任务的进度条.rar

    在Java编程中,实现任务进度条是一个常见的需求,特别是在处理大量数据、长时间运行的任务或文件上传下载等场景中。进度条能够提供用户友好的界面,显示任务执行的进度,增加用户体验。下面我们将深入探讨如何使用...

    Spring定时器quartz

    Spring定时器Quartz是Java应用中广泛使用的任务调度框架,它允许开发者定义并执行复杂的定时任务。这篇博客可能探讨了如何在Spring框架中集成Quartz,以实现灵活、可扩展的任务调度。 Quartz是一个开源的作业调度...

    定时器quartZ

    - 例如,可以通过监听器记录任务执行日志或处理异常。 7. **错误处理**: - Job的`execute()`方法抛出的异常会被捕获并记录,不会影响其他Job的执行。 - 可以通过`misfireInstructions`属性设置触发器在错过触发...

Global site tag (gtag.js) - Google Analytics