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

问题描述 投票:0回答:3

项目是使用本地tomcat的战争

我想知道如何在服务器启动后自动运行方法?我知道在服务器启动期间运行它的方法,例如@Bean方法或在上下文初始化期间,但是如何在服务器成功启动后执行此操作?

java tomcat war
3个回答
1
投票

据我所知,你正在使用Spring。因此,您可以查看Spring应用程序上下文事件。例如,您可以像这样定义事件侦听器方法

@EventListener
public void handleContextRefreshEvent(ContextStartedEvent ctxStartEvt) {
    System.out.println("Context Start Event received.");
}

1
投票

在Tomcat上,您可以使用Tomcat自己的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-File放在Tomcat的全局lib文件夹中!

LifecycleListener必须在宿主元素内的Tomcat server.xml中注册,因为我们想要监听主机启动:

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

有关更多文档,请参阅Lifecycle-Doc

(使用Tomcat 8.5.30和Java 11测试)


0
投票

使用Spring Boot,将@PostConstruct注释添加到方法会导致它在Spring Boot应用程序启动后运行。

© www.soinside.com 2019 - 2024. All rights reserved.