我用这种方式创建Grizzly WebappContext:
WebappContext webContext = new WebappContext("WebappContext", "");
我有MyInitializer实现ServletContainerInitializer
。如何将此初始化程序添加到webContext?我试过这种方式:
webContext.addListener(new MyInitializer());
但永远不会调用MyInitializer.onStartup
方法。怎么做?
答案 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