java - tomcat 服务器启动后自动从 war 应用程序运行方法

标签 java tomcat war

项目是使用本地tomcat的war

我想知道如何在服务器启动后自动运行一个方法?我知道在服务器启动期间运行它的方法,例如 @Bean 方法或在上下文初始化期间运行它,但是在服务器成功启动后我该怎么做?

最佳答案

在 Tomcat 上,您可以使用 Tomcat-own LifecycleListener .如果您在主机组件上为 AFTER_START_EVENT 注册一个监听器,您应该得到您想要的。

LifecycleListener 的代码示例:

package my.sourcecode;

import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;

public class TomcatHostLifecycleListener implements LifecycleListener {

@Override
public void lifecycleEvent(LifecycleEvent lifeCE) {

    if (Lifecycle.AFTER_START_EVENT.equals(lifeCE.getType())) {
        System.out.println("************ TomcatHostLifecycleListener: After Start Event");
    }

}

}

代码必须作为 JAR 文件放在 Tomcat 的全局 lib 文件夹中!

LifecycleListener 必须在 Tomcats server.xml 中注册,在您的例子中是在主机元素中,因为我们想要监听主机启动:

....
<Host ... >
    <Listener className="my.sourcecode.TomcatHostLifecycleListener"/>
    ....

参见 Lifecycle-Doc获取更多文档。

(使用 Tomcat 8.5.30 和 Java 11 测试)

关于java - tomcat 服务器启动后自动从 war 应用程序运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55581132/

相关文章:

java - spring.kafka.consumer.auto-offset-reset 在 spring-kafka 中如何工作

使用 BouncyCaSTLe 弃用方法的 Paypal 按钮加密的 Java 代码 - 如何修复?

java - 在 AuthenticationSuccessHandler 中添加权限

java - Web 应用程序中的计划任务?

java - Tomcat - FileNotFoundException

java - 如何加载外部 "war"文件到spring boot的嵌入式tomcat服务器

java - Hadoop map-reduce 输出包含奇怪的字符

java - 尝试从 war 文件启动新应用程序时出现 java.net.BindException : Address already in use

java - 如何将WAR结构嵌入到桌面应用程序中?

java - Java War文件在jar文件中引发FileNotFoundException