资源预览内容
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
有时候,我们需要在服务启动的时候,做些初始化的工作,比如将一些系统配置读取到内存中等等。本文介绍了两种方式来实现这个功能。下面我简单介绍一下。第一种用 Servlet 的初始化。初始化工作是通过 Servlet 中的 init()方法来做的。首先建立一个 Servlet 类,代码如下import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;public class StartupServlet extends HttpServlet public void init() throws ServletException String configFile = this.getInitParameter(configFile);System.out.println(Servlet: + configFile);在 web.xml 中配置启动服务就运行的ServletStartupServletcom.mwxx.framework.common.StartupServletconfigFile/WEB-INF/conf/config.xml0这样启动服务(比如 tomcat)的时候就可以看到输出的 configFile 值了另外在启动服务(tomcat)的时候有可能会报某种错:jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class这一般是你项目中使用 的 Servlet 包与 tomcat 中带的包重复了,我使用的是 tomcat 6.0.x,如果我在项目中存在着一个 Servlet 包:servlet-api-2.5-6.1.14.jar,那么这个时候就会报错,因为在 TOMCAT_HOME/lib 下已经存在 servlet-api.jar 了,所以解决方法就是只保留一个包,比如我将项目下的 servlet-api- 2.5-6.1.14.jar 删除,再重启 服务就没有问题了.第二种用 listener 初始化。初始化工作是通过 ServletContextListener 中的contextInitialized 方法来做的。首先建立一个 Listener 类,代码如下import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class StartupListener implements ServletContextListener public void contextDestroyed(ServletContextEvent event) public void contextInitialized(ServletContextEvent event) ServletContext context = event.getServletContext();String configFile = context.getInitParameter(configFile);System.out.println(Listener: + configFile);在 web.xml 中配置configFile/WEB-INF/conf/config.xmlcom.mwxx.framework.common.StartupListener注:1.第二种方法与第一种方式中的参数配置方式不同,第一种 init-param 是配置到 servlet 里面的,第二种 context-param 是全局的,与 Listener 平级。实际上在 Servlet 中也可以通过this.getServletContext().getInitParameter(configFile);方法获取 context-param 中的值。2.第二种 Listener 方式比第一种 Servlet 方式初始化早两种方式同时使用时输出如下Listener:/WEB-INF/conf/config.xmlServlet:/WEB-INF/conf/config.xml
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号