Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Spring boot中添加tomcat服务器LifeCycleListener_Spring_Tomcat_Spring Boot_Listener - Fatal编程技术网

如何在Spring boot中添加tomcat服务器LifeCycleListener

如何在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 boot应用程序中添加我们自己的侦听器,如:


我们如何在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类”);