tomcat - 当我们第一次部署一个WAR 文件时,一些代码可以运行吗?

标签 tomcat web-deployment

有没有我可以使用的方法或 API,以便每当我部署一个新的 WAR 文件时,应该执行一部分代码,或者当 Tomcat 启动时,相应的 servlet 应该启动或连续运行一些代码。

最佳答案

恢复一个旧问题,因为唯一的答案没有显示任何示例。

为了在部署/取消部署 Web 应用程序 WAR 或启动/停止 Tomcat 时运行自定义代码,您需要:

  1. 实现 ServletContextListener 监听器及其方法 contextInitialized()contextDestroyed()
  2. 让 Tomcat 了解您的实现。根据documentation ,您可以将实现类添加到部署描述符,用 WebListener 对其进行注释,或者通过 ServletContext< 上定义的 addListener() 方法之一注册它

这是一个例子(基于 this post ):

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>

关于tomcat - 当我们第一次部署一个WAR 文件时,一些代码可以运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5336243/

相关文章:

python - Django - 部署后只有一些静态图像没有显示在网页上

security - Jenkins 自动创建用户帐户,如何登录/更改密码?

java - 为什么myeclipse自己的tomcat比我配置的本地tomcat快?

java - 将 war 应用程序名称与 war 文件名分开

java - 在不重启 Tomcat 7 的情况下在 war 部署后更改 xml/property 文件

asp.net - 使用使用它们的 Web 项目部署 MEF 组件

java - 无法使用 -Dcom.sun.management.jmxremote.authenticate=true 启动 Tomcat

jsp - Tomcat 错误,无法读取 session 范围变量

python - 在给定目录 : static files not found 上部署 Flask 应用程序

angular - HTTP 拦截器使用 Angular 2、4、6、7、8、9 TypeScript 在请求失败时获取状态 0