ayy*_*ppa 8 tomcat web-deployment
我是否可以使用任何方法或API,以便每当我部署新的WAR文件时,应该执行一部分代码,或者当Tomcat启动时,相应的servlet应该连续启动或运行某些代码.
Mif*_*eet 11
从唯一的答案中恢复一个旧问题没有显示任何例子.
为了在部署/取消部署Web应用程序WAR或启动/停止Tomcat时运行自定义代码段,您需要:
ServletContextListener监听器及其方法contextInitialized()和contextDestroyed().WebListener,或者通过其中addListener()定义的方法之一注册它ServletContext.这是一个例子(基于这篇文章):
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并添加以下内容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>
Run Code Online (Sandbox Code Playgroud)
您可以在web.xml中包含"ContextListener".将要部署/启动Webb应用程序WAR时,将创建此类的实例.
此代码可以启动一个可以继续运行的线程,直到部署app.
示例:http://www.javafaq.nu/java-example-code-233.html
| 归档时间: |
|
| 查看次数: |
4977 次 |
| 最近记录: |