首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

监听器ServletContextListener初记

2012-11-01 
监听器ServletContextListener小记今天奉命写一个监听器监听tomcat,在tomcat启动后隔半个小时生成一些要求

监听器ServletContextListener小记
   今天奉命写一个监听器监听tomcat,在tomcat启动后隔半个小时生成一些要求的静态页面,因为没写过监听器,所以在网上看了一些资料后觉得不是很难就很兴奋地开始动手,
   用了ServletContextListener,可没想到监听是监听到了,但是搞得tomcat启动的时候一路在监听,以为是这个监听器不适合就换成了session的,以为快成功的
   时候老大又说不行(后来一想也确实不行),所以又换回ServletContextListener来继续搞,后来上网看来看去原来用这个监听器才是符合要求的,一开始那种
   只不过是因为我把定时器Timer定义在了ServletContextListener的初始化函数里面了,搞得tomcat启动时老是在监听而启动不了,后来我把定时器Timer定义在
   另外一个类里面,再在ServletContextListener的初始化函数里面调用就搞定了。还是没经验啊。

        不过这里还有个问题:如何在这个初始化函数里面获得tomcat的IP和端口呢?也许很难,也许很easy,还不知道!

   Listener:

   

public class GenPagesListener implements ServletContextListener{        private DoSomething ds = null;            public void contextInitialized(ServletContextEvent sce) {                        String rootPath = new File(sce.getServletContext().getRealPath("/")).getParentFile().toString();                if(rootPath.contains("\"))                {                        rootPath = rootPath.replace("\", "/")+"/ROOT";                }                String hostPath = AppPropertyUtil.getProperty("webUrl");                                                GlobeContext.setRootPath(rootPath);                GlobeContext.setHostPath(hostPath);                        ds = new DoSomething(1000,1800000);    }    public void contextDestroyed(ServletContextEvent sce) {       ds.destoryTimer();    }}


   中间类:

  
 public class DoSomething {        private java.util.Timer timer;        public DoSomething(int a,int b)        {                timer = new Timer();                timer.schedule(new GenPageTask(), a,b);        }                public void destoryTimer(){            timer.cancel();            }}


   要执行的任务:

  
public class GenPageTask extends TimerTask{                public void run()        {                ApplicationContext operty("listPageSize"));                if (chan.getPageSize() != null) {                        pageSize = chan.getPageSize();                }                try {                        List<Criterion> cris = new ArrayList<Criterion>();                        cris.add(Restrictions.eq("channelId", chan.getId()));                        cris.add(Restrictions.eq("struts", 1));                        IDocumentManager documentManager = (IDocumentManager)context.getBean("documentManager");                        int totalPage = documentManager.getPageObject(0, pageSize, cris)                                        .getTotalPage();                        for (int page = 1; page <= totalPage; page++) {                                String index = "";                                if (page == 1) {                                        index = "index";                                } else {                                        index = "list_" + page + "";                                }                                String url = rootpath                                                + "admin/channel/docList.htm?data.channelId="                                                + chan.getId() + "&data.page=" + page;                                HtmlGenUtil.writeHtml(puppath + index + ".shtml", HtmlGenUtil                                                .getHtmlCode(url), "YES");                        }                } catch (Exception e) {                        e.printStackTrace();                }        }}


       1 楼 scnujie 2008-07-25   good example! 2 楼 coreymylife 2008-10-25   不是问题的问题!~

热点排行