如何将ServletContainerInitializer添加到Grizzly WebappContext?

时间:2018-05-18 16:56:22

标签: java servlets java-ee grizzly servlet-listeners

我用这种方式创建Grizzly WebappContext:

WebappContext webContext = new WebappContext("WebappContext", "");

我有MyInitializer实现ServletContainerInitializer。如何将此初始化程序添加到webContext?我试过这种方式:

webContext.addListener(new MyInitializer());

但永远不会调用MyInitializer.onStartup方法。怎么做?

1 个答案:

答案 0 :(得分:1)

ServletContainerInitializer基于服务提供者接口(SPI)概念。必须在ServletContainerInitializer文件中配置META-INF/services/javax.servlet.ServletContainerInitializer接口的实现。 此jar包含一个侦听器必须位于ServletContainer的WEB-INF/lib中。

webContext.addListener将满足您的需求,但给定的侦听器必须是以下一个或多个接口的实例:

- javax.servlet.ServletContextAttributeListener
- javax.servlet.ServletRequestListener
- javax.servlet.ServletRequestAttributeListener
- javax.servlet.http.HttpSessionListener
- javax.servlet.http.HttpSessionAttributeListener