如何在Spring boot中添加tomcat服务器LifeCycleListener
我们正在尝试在Spring boot应用程序中添加我们自己的侦听器,如:如何在Spring boot中添加tomcat服务器LifeCycleListener,spring,tomcat,spring-boot,listener,Spring,Tomcat,Spring Boot,Listener,我们正在尝试在Spring boot应用程序中添加我们自己的侦听器,如: 我们如何在Spring引导应用程序中添加此功能 只需将此配置类添加到项目中: import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; i
我们如何在Spring引导应用程序中添加此功能 只需将此配置类添加到项目中:
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Created by jacks808@163.com on 16/10/28.
*/
@Configuration
public class TomcatConfig implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
}
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addContextLifecycleListeners(null);
return factory;
}
}
更详细的信息如下:只需将此配置类添加到项目中:
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Created by jacks808@163.com on 16/10/28.
*/
@Configuration
public class TomcatConfig implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
}
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addContextLifecycleListeners(null);
return factory;
}
}
这里还有更多细节:在最新版本的spring boot中,实现已经更改
@Component
public class MyTomcatWebServerCustomizer
implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
// customize the factory here
}
}
@组件
公共类MyTomcatWebServerCustomizer
实现WebServerFactoryCustomizer{
@凌驾
公共void自定义(TomcatServletWebServerFactory){
//在这里定制工厂
}
}
在最新版本的spring boot中,实现已更改
@Component
public class MyTomcatWebServerCustomizer
implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
// customize the factory here
}
}
@组件
公共类MyTomcatWebServerCustomizer
实现WebServerFactoryCustomizer{
@凌驾
公共void自定义(TomcatServletWebServerFactory){
//在这里定制工厂
}
}
我们尝试了这个解决方案,只需初始化侦听器并将其传递到addContextLifecycleListeners,但它不起作用。我们必须使用所有必需的参数显式调用lifecycleEvent(..),以使其工作。因为在server.xml中我们只添加了侦听器条目,所以您对初始化侦听器有什么想法吗?我们有解决这个问题的方法吗?您是否使用以下行添加了侦听器的impl类:factory.addContextLifecycleListeners(“侦听器的某个impl类”);我们通过简单地初始化侦听器并将其传递到addContextLifecycleListeners来尝试此解决方案,但它不起作用。我们必须使用所有必需的参数显式调用lifecycleEvent(..),以使其工作。因为在server.xml中我们只添加了侦听器条目,所以您对初始化侦听器有什么想法吗?我们有解决这个问题的方法吗?您是否使用以下行添加了侦听器的impl类:factory.addContextLifecycleListeners(“侦听器的某个impl类”);