`

tomcat定时任务

 
阅读更多
1 tomcat启动后自动加载一个用户的类
  有时候在开发Web应用的时候,需要tomcat启动后自动加载一个用户的类,执行一些初始化方法,如从数据库中加载业务字典到内存中,因此需要在tomcat启动时就自动加载一个类,或运行一个类的方法。 可以采用在WEB-INF/web.xml中添加一个监听程序(ServletContextListener配置项),步骤如下:
1) 增加一个监听程序 MyServletContextListener.java,实现javax.servlet.ServletContextListener接口
package test.startup;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyServletContextListener implements ServletContextListener
{

  public void contextDestroyed(ServletContextEvent arg0)
  {

  }

  public void contextInitialized(ServletContextEvent arg0)
  {
   System.out.println("加载业务字典");
   try
   {
    com.eos.common.dict.DictMap.loadData();
   }
   catch(Exception e)
   {
    System.out.println("加载业务字典失败!");
    e.printStackTrace();
   }
  }
}

2) 配置监听器web.xml:

<listener>
  <listener-class>test.startup.MyServletContextListener</listener-class>
</listener>

servlet 规范中为每种事件监听器都定义了相应的接口,在编写事件监听器程序时只需实现这些接口就可以了。一些Servlet事件监听器需要在web应用程序的部署 文件描述符文件(web.xml)中进行注册(注册之后才能发布),一个web.xml可以注册多个servlet事件监听器。web服务器按照它们在web.xml中注册顺序来加载和注册这些servlet事件监听器。servlet事件监听器的注册和调用过程都是由web容器自动完成的,当发生被监听对象被创建,修改,销毁等事件时,web容器将调用与之相关的servlet事件监听器对象的相应方法(所监听到的对象如果在创建、修改、销毁事件触发的时候就会调用这些监听器这就相当于面向事件编程的概念),用户在这些方法中编写的事件处理代码(相当于JS中的事件响应)即被执行。由于在一个web应用程序中只会为每个事件监听器类创建一个实例对象,有可能出现多个线程同时调用一个事件监听对象的情况,所以要注意多线程安全问题。

注意:应用事件监听器程序是建立或修改servlet环境或会话对象时通知的类。它们是servlet规范的版本2.3中的新内容。注册一个监听程序涉及在 web.xml的web-app元素内放置一个listener元素。虽然listener元素的结构很简单,但请不要忘记,必须正确地给出web- app元素内的子元素的次序。listener元素位于所有的servlet 元素之前以及所有filter-mapping元素之后。此外,因为应用生存期监听程序是serlvet规范的2.3版本中的新内容,所以必须使用 web.xml DTD的2.3或以后版本,而不是2.2版本,如下:
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>xsupload</servlet-name>
<servlet-class>com.kge.prj.ams.lineloss.xsmanual.action.XSMeterFileUploadController
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xsupload</servlet-name>
<url-pattern>/xsfileupload</url-pattern>
</servlet-mapping>

</web-app>


-------------------------------
二、监听器类型
按监听的对象划分:servlet2.4规范定义的事件有三种:
1.用于监听应用程序环境对象(ServletContext)的事件监听器
2.用于监听用户会话对象(HttpSession)的事件监听器
3.用于监听请求消息对象(ServletRequest)的事件监听器

按监听的事件类项划分
1.用于监听域对象自身的创建和销毁的事件监听器
2.用于监听域对象中的属性的增加和删除的事件监听器
3.用于监听绑定到HttpSession域中的某个对象的状态的事件监听器

在一个web应用程序的整个运行周期内,web容器会创建和销毁三个重要的对象,ServletContext,HttpSession,ServletRequest。

PS:其中Context 为JSP页面包装页面的上下文.由容器创建和初始化,管理对属于JSP中特殊可见部分中已命名对象的访问. 该接口用来定义了一个Servlet的环境对象。也可认为这是多个客户端共享的信息,它与session的区别在于应用范围的不同,session只对应于一个用户。
servlet2.4中定义了三个接口:
ServletContextListener,HttpSessionListener,ServletRequestListener。分别实现对应的接口就可以实现对应的监听处理
在ServletContextListener接口中定义了两个事件处理方法,分别是

contextInitialized()和contextDestroyed()
public void contextInitialized(ServletcontextEvent sce)
这个方法接受一个ServletContextEvent类型参数,在contextInitialized可以通过这个参数获得当前被创建的ServletContext对象。
public void contextDestroyed(ServletContextEvent sce)
2.在HttpSessionListneter接口中共定义了两个事件处理方法,分别是sessionCreated()和sessionDestroyed()
public void sessionCreated(HttpSessionEvent se)
这个方法接受一个(HttpSessionEvent 类型参数,在sessionCreated可以通过这个参数获得当前被创建的HttpSession对象。
public void sessionDestroyed(HttpSessionEvent se)
3.在ServletRequestListener接口中定义了两个事件处理方法,分别是requestInitialized()和requestDestroyed()
public void requestInitialized(ServletRequestEvent sre)
这个方法接受一个(ServletRequestEvent 类型参数,在requestInitialized可以通过这个参数获得当前被创建的ServletRequest对象。
public void requestDestroyed(ServletRequestEvent sre)
可 以看出三个监听器接口中定义的方法非常相似,执行原理与应用方式也相似,在web应用程序中可以注册一个或者多个实现了某一接口的事件监听器,web容器 在创建或销毁某一对象(如ServletContext,HttpSession)时就会产生相应的事件对象
(如ServletcontextEvent ,或者HttpSessionEvent),接着依次调用每个事件监听器中的相应处理方法,并将产生的事件对象传递给这些方法。
三、分类及介绍
1. ServletContextListener:用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。
2. ServletContextAttributeListener:用于监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性,监听器类需要实现javax.servlet.ServletContextAttributeListener接口。
3. HttpSessionListener:用于监听Session对象的创建和销毁,监听器类需要实现javax.servlet.http.HttpSessionListener接口或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。
4. HttpSessionActivationListener:用于监听Session对象的钝化/活化事件,监听器类需要实现javax.servlet.http.HttpSessionListener接口或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。
5. HttpSessionAttributeListener:用于监听Session对象属性的改变事件,监听器类需要实现javax.servlet.http.HttpSessionAttributeListener接口。
四、部署
监听器的部署在web.xml文件中配置,在配置文件中,它的位置应该在过滤器的后面Servle的前面
五、示例
第一步:编写监听器类
[html] view plaincopyprint?
package cn.listen; 
 
import javax.servlet.ServletContextEvent; 
 
import javax.servlet.ServletContextListener; 
 
 
public class MyListener implements ServletContextListener { 
 
    public void contextDestroyed(ServletContextEvent sce) { 
 
           System.out.println("die"); 
 
    } 
 
    public void contextInitialized(ServletContextEvent sce) { 
 
           System.out.println("init");  
 
    } 
 
}  

第二步:布置安装
<listener>
  <listener-class>cn.listen.MyListener</listener-class>
</listener>
运行服务器会出现
[20:42:38.406] {main} WebApp[http://default] active
init
[20:42:38.437] {main} WebApp[http://default/MyProj] active
监听到了应用启动。



  • 大小: 871.6 KB
分享到:
评论

相关推荐

    Tomcat的定时任务(计时器)

    本文将深入探讨如何在Tomcat中实现定时任务,主要涉及的知识点包括Java的定时器(Timer)和Spring框架的TaskScheduler。 首先,让我们了解一下Java中的定时任务。在Java标准库中,有一个名为`java.util.Timer`的类...

    java 定时器任务timer 随tomcat启动而启动 同步启动

    我们通常写的timer都是用main方法写的定时器,但同样我们也需要根据服务器启动后定时器也启动的 定时执行任务。不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台...

    tomcat 定时重启工具

    由于工作需求,本人自己制作的 Tomcat 定时重启小工具,监听Tomcat的CMD运行窗口,计算运行时间,来完成 定时重启任务,配置可以自动临时保存,不生成多余文件。打算在后续版本中加入一个 HTTP监听任务,判断是否宕...

    定时任务工具tomcat+jenkins

    本文将详细介绍如何利用Apache Tomcat(一个广泛使用的Java应用服务器)与Jenkins(一个开源持续集成/持续部署工具)来创建定时任务,实现电脑自动重启以及Tomcat的开机自启动。 首先,我们需要理解Tomcat的开机自...

    tomcat定时重启方案

    【标题】:“Tomcat定时重启方案” 【描述】:本文将详细介绍如何配置Tomcat进行定时重启,包括Tomcat绿色版的注册为系统服务、调整内存设置、创建批处理文件和设置系统计划任务。 【标签】:“Tomcat” 【正文】...

    Tomcat在Linux下的定时重启

    下面将详细介绍在 Linux 中创建定时任务,创建 Tomcat 重启的脚本文件,并增加 Tomcat 定时重启任务的方法和步骤。 一、环境准备 在开始之前,需要准备一个 Linux 系统,例如 Ubuntu,並安装好 Tomcat 6.0。在继续...

    tomcat自动定时重启

    在IT行业中,Tomcat是一款广泛使用的开源Java应用服务器,它主要负责运行基于Servlet和JSP的应用...务必注意,频繁的重启可能会对系统性能产生影响,因此在设置定时任务时,要确保其符合业务需求和服务器的负载能力。

    Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查

    4. **部署与测试**:项目部署在Tomcat服务器上,当服务器启动时,Quartz会自动加载数据库中的定时任务。通过监控日志或者定制的监控界面,可以观察到定时任务的执行情况,验证其是否按照预期工作。 5. **Spring的...

    Tomcat定时启动与监控

    【Tomcat定时启动与监控】 在IT运维工作中,确保服务器上的应用程序如Tomcat稳定运行是非常重要的。为了实现这一目标,可以设置定时启动和监控机制。本文主要介绍如何在Linux和Windows环境下实现Tomcat的定时启动,...

    tomcat 定时作业

    然而,除了作为Web服务器的角色,Tomcat还可以被用来执行定时任务,这对于需要定期执行某些操作的应用场景非常有用。本篇文章将深入探讨如何在Tomcat中设置定时作业,并为初学者提供指导。 首先,我们要了解Tomcat...

    定时重启tomcat

    轻松实现tomcat定时重启 首先修改jsp.bat中的两个路径,其中set JAVA_HOME后面是jdk路径,下面是tomcat路径;运行,执行注册。 然后修改tomcat.bat中的ping 127.0.0.1 -n 5(暂停时间) 最后将tomcat.bat添加的计划...

    简易的定时重启tomcat方案

    这样,我们就设置了一个定时任务,按照指定时间自动执行restart.bat,从而实现Tomcat的定时重启。 值得注意的是,这种方法适用于小型项目或者测试环境,对于生产环境,我们可能需要更复杂和灵活的解决方案,如使用...

    tomcat定时重启脚本

    tomcat定时重启任务脚本。Linux运维人员可通过改脚本对tomcat进行定时重启,直接更改tomcat路径,并设置crond任务即可。

    quartz spring动态定时任务,可以直接在tomcat上面部署运行

    总结,"quartz spring动态定时任务,可以直接在tomcat上面部署运行"这个主题涉及的知识点包括: 1. Quartz作业调度框架的基本概念和使用。 2. Spring如何集成Quartz,包括配置Scheduler、定义Job和Trigger。 3. ...

    定时重启Tomcat

    这是一个运行于Windows系统上的 bat脚本文件,主要用于重启Tomcat或其它服务,您只要修改其服务名称即可轻松完成重启任务,并且您配合查看我的博客文档...可以轻松完成定时重启。

    spring定时任务执行两次及tomcat部署缓慢问题的解决方法

    Spring 定时任务执行两次及 Tomcat 部署缓慢问题的解决方法 Spring 定时器执行两次问题重现和解析 在使用 Quartz 定时任务框架时,可能会出现定时任务执行两次的问题。这个问题可能会在开发环境中没有出现,但是...

    tomcat启动时定时循环执行内容(action)

    标题中的“tomcat启动时定时循环执行内容(action)”指的是在Tomcat服务器启动过程中,通过配置或者自定义代码实现一个定时任务,使得该任务在Tomcat启动后能够周期性地自动执行。这种机制常用于需要定期检查、更新...

    spring定时任务执行两次的异常排查处理

    一个tomcat下部署了两个应用,一个是普通web应用syncc,另一个应用syncc_wx属于微信公众号后台程序涉及消息定时推送,tomcat未分离...”spring定时任务执行两次的异常排查处理.docx"针对上述描述问题进行分析和解决。

    定时启动tomcat应用服务器批处理脚本

    部署时,只需将脚本和相关的依赖文件(如Tomcat)复制到目标机器上,然后在该机器上创建相应的定时任务。 总结,定时启动Tomcat应用服务器批处理脚本是一种实用的运维工具,通过结合Windows的任务计划程序,我们...

Global site tag (gtag.js) - Google Analytics