简体   繁体   中英

Disable specific ServletContextListener to prevent startup on tomcat

My project is using spring boot with webflux , tomcat .

I have a internal library class that is a ServletContextListener

@WebListener
public class DevIoServletContextListener implements ServletContextListener {
    @Inject
    private DevIoInjector injector;

    public DevIoServletContextListener() {
    }

    public void contextInitialized(ServletContextEvent event) {
        this.injector.inject();
    }

    public void contextDestroyed(ServletContextEvent event) {
    }
}

This internal class throws an exception inside method contextInitialized :

[ERROR   ] SRVE0283E: Exception caught while initializing context: java.lang.NullPointerException
    at br.com.dev.lib.DevIoServletContextListener.contextInitialized(DevIoServletContextListener.java:33)

this class is not important for my development.. i would like ignore or disable this listener, is possible?

I don't make changes inside this listener because is an internal class from a library.

I will appreciate any help.

I tried add @ServletComponentScan("br.com.dev.bit.io") with my packages only inside main class, but not worked.

@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan("br.com.dev.bit.io")
@ServletComponentScan("br.com.dev.bit.io")
public class Application extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

The only way to disable a listener annotated with @WebListener in the WEB-INF/classes folder is to disable annotation scanning altogether through the metadata-complete attribute in the WEB-INF/web.xml descriptor:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    metadata-complete="true"
    version="4.0">
    ...
</web-app>

This will not disable ServletContainerInitializer s, therefore Spring Boot initialization will be unaffected.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM