我使用的是WebSphere Application Server,它提供了平台初始化侦听器,当应用程序启动时会调用该侦听器。现在,我正在使用Apache Tomcat,但没有找到这些东西,而我试图做的是在应用程序开始处理请求之前进行一些初始化工作。
我应该如何通过Apache Tomcat做到这一点?
您创建一个Listener类,实现ServletContextListener如下的类:
Listener
ServletContextListener
package com.vy; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; @WebListener public class StartStopListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("Servlet has been started."); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { System.out.println("Servlet has been stopped."); } }
添加配置信息WEB-INF\web.xml如下所示:
WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <listener> <listener-class>com.vy.StartStopListener</listener-class> </listener> </web-app>
运行Tomcat时,您将在控制台屏幕上看到结果:
Servlet has been started.
参考:http : //docs.oracle.com/javaee/7/api/javax/servlet/ServletContextListener.html