是否有任何方法或 API 可以使用,以便每当我部署新的 WAR 文件时,部分代码都应该执行,或者当 Tomcat 启动时,相应的 servlet 应该连续启动或运行一些代码。
恢复一个老问题,因为唯一的答案没有显示任何例子。
为了在部署/取消部署 Web 应用程序 WAR 或启动/停止 Tomcat 时运行自定义代码段,您需要:
- 实施
ServletContextListener
监听器及其方法contextInitialized()
and contextDestroyed()
.
- 让 Tomcat 了解您的实施情况。根据文档 http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html,您可以将实现类添加到部署描述符中,并用
WebListener
,或通过其中之一进行注册addListener()
定义于的方法ServletContext
.
这是一个例子(基于这个帖子 http://tomcat-configure.blogspot.cz/2009/01/tomcat-context-listener-example.html):
package com.example;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListener implements ServletContextListener {
/** The servlet context with which we are associated. */
private ServletContext context = null;
@Override
public void contextDestroyed(ServletContextEvent event) {
log("Context destroyed");
this.context = null;
}
@Override
public void contextInitialized(ServletContextEvent event) {
this.context = event.getServletContext();
log("Context initialized");
}
private void log(String message) {
if (context != null) {
context.log("MyServletContextListener: " + message);
} else {
System.out.println("MyServletContextListener: " + message);
}
}
}
并将以下内容添加到web.xml
(或者,使用WebListener
注释或addListener()
方法):
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
...
<listener>
<listener-class>com.example.MyServletContextListener</listener-class>
</listener>
</web-app>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)