J2EE项目中后台定时运行的程序_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2017 | 回复: 0   主题: J2EE项目中后台定时运行的程序        下一篇 
cc
注册用户
等级:中校
经验:1900
发帖:195
精华:0
注册:2011-7-25
状态:离线
发送短消息息给cc 加好友    发送短消息息给cc 发消息
发表于: IP:您无权察看 2015-5-13 10:15:34 | [全部帖] [楼主帖] 楼主

    在开发J2EE项目中,有时候需要在后台定时执行一些代码。比如定时对web数据建立倒排索引、定时发送邮件、定时写日志文件。下面将这几段代码总结出来,以备以后使用。

    首先需要继承TimerTask类,覆盖run()方法,将需要定时执行的业务代码写在这个run()方法中:

[java]
import java.util.Date;
import java.util.TimerTask;
public class DisplayDate extends TimerTask {
      @Override
      public void run() {
            // TODO Auto-generated method stub
            try {
                  System.out.println(new Date());//定时打印当前时间
            } catch (Exception e) {
                  // TODO: handle exception
                  e.printStackTrace();
            }
      }
}


  然后需要另外一个类实现ServletContextListener 接口,这个接口能够监听web应用的生命周期。当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent事件的两个方法:

    contextInitialized(ServletContextEvent sce) :当Servlet 容器启动Web 应用时调用该方法。在调用完该方法之后,容器再对Filter 初始化,并且对那些在Web 应用启动时就需要被初始化的Servlet 进行初始化。

    contextDestroyed(ServletContextEvent sce) :当Servlet 容器终止Web 应用时调用该方法。在调用该方法之前,容器会先销毁所有的Servlet 和Filter 过滤器。

[java]
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class AutoRun implements ServletContextListener {
      private Timer timer = null;
      public void contextInitialized(ServletContextEvent arg0) {
            // TODO Auto-generated method stub
            timer=new Timer(true);
            timer.schedule(new DisplayDate(),0,1000*3);//延迟0秒,每3秒执行一次DisplayDate()
      }
      public void contextDestroyed(ServletContextEvent arg0) {
            // TODO Auto-generated method stub
            timer.cancel();
      }
}


  最后就是在web.xml文件中配置,使得该监听器起作用:

[html]
<listener  <listener-class>com.hh.autorun.AutoRun</listener-class>

</listener>


  完成以上步骤以后,当你启动服务器

软件,如tomcat,后台就会定时运行任务了。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论