java web系统级初始化工作

来源:互联网 发布:巨石监控分析软件 编辑:程序博客网 时间:2024/05/22 06:10
  通常我们在做web开发时,有些系统级参数希望在web启动时就进行一次性初始化,供整个工程调用使用。如,系统配置参数等。这时可以采用两种方式:一是定义一个servlet、另一种是使用监听器。


方案一:使用servlet的方式应该不陌生,在web.xml中定义一个servlet,在init方法中把要初始化的东西写到里面;如:

<servlet><servlet-name>initServlet</servlet-name><servlet-class>com.ifeng.crm.common.InitServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>
注:不需要写servlet-maping
public class InitServlet extends HttpServlet {private static Logger logger = Logger.getLogger(InitServlet.class);@Overridepublic void init() throws ServletException {// TODO Auto-generated method stubsuper.init();ServletContext context = super.getServletContext();ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);InitService initService = (InitService)ctx.getBean("initService");SyncService syncService = (SyncService)ctx.getBean("syncService");logger.info("初始化数据开始。。。");initService.init();logger.info("初始化完成!");logger.info("启动iams同步服务。。。");new Thread(new SyncIamsThread(syncService)).start();logger.info("启动iams同步服务完成!");}}


方案二:listener:

        ServletContext 被 Servlet 程序用来与 Web 容器通信。每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享。所以ServletContext 的最大应用是Web缓存----把不经常更改的内容读入内存,所以服务器响应请求的时候就不需要进行慢速的磁盘I/O了。
       ServletContextListener 是 ServletContext 的监听者,如果 ServletContext 发生变化,如服务器启动时 ServletContext 被创建,服务器关闭时 ServletContext 将要被销毁。在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。

       服务器启动时,ServletContextListener 的 contextInitialized()方法被调用,所以在里面创建好缓存。

实例:

1.web.xml

 <listener>   <listener-class>com.zzcatv.util.projectInit</listener-class>  </listener>
2.java

public class ProjectInit implements ServletContextListener{private static Logger logger = Logger.getLogger(ProjectInit.class);public void contextDestroyed(ServletContextEvent arg0) {logger.info("==========初始化信息进行销毁==========");}public void contextInitialized(ServletContextEvent arg0) {logger.info("==========系统初始化==========");try {ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(arg0.getServletContext());InitService initService = (InitService) ctx.getBean("initServiceImpl");initService.init();} catch (Exception e) {e.printStackTrace();}}}


0 0
原创粉丝点击