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

时间:2019-04-08 20:16:42

标签: java tomcat war

项目是一场使用本地雄猫的战争

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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文件放置在Tomcat的全局lib文件夹中!

在您的情况下,必须在Tomcats server.xml 中将LifecycleListener注册到host元素中,因为我们要监听主机启动情况:

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

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

(已通过Tomcat 8.5.30和Java 11测试)

答案 2 :(得分:0)

使用Spring Boot,在方法中添加@PostConstruct批注,使其在Spring Boot应用程序启动后运行。