Java 如何将ServletContainerInitializer添加到Grizzly WebappContext?

Java 如何将ServletContainerInitializer添加到Grizzly WebappContext?,java,servlets,jakarta-ee,grizzly,servlet-listeners,Java,Servlets,Jakarta Ee,Grizzly,Servlet Listeners,我通过以下方式创建Grizzly WebappContext: WebappContext webContext = new WebappContext("WebappContext", ""); webContext.addListener(new MyInitializer()); 我有一个实现ServletContainerInitializer的MyInitializer。如何将此初始值设定项添加到webContext?我试着这样做: WebappContext webContext

我通过以下方式创建Grizzly WebappContext:

WebappContext webContext = new WebappContext("WebappContext", "");
webContext.addListener(new MyInitializer());
我有一个实现ServletContainerInitializer的MyInitializer。如何将此初始值设定项添加到webContext?我试着这样做:

WebappContext webContext = new WebappContext("WebappContext", "");
webContext.addListener(new MyInitializer());
但从未调用MyInitializer.onStartup方法。如何做到这一点?

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