【发布时间】:2011-10-06 21:46:23
【问题描述】:
您能否在web.xml 文件中指向实现ServletContainerInitializer 接口的类,还是必须在META-INF/services/javax.servlet.ServletContainerInitializer 下添加一个文件才能让J2EE 服务器接收它?
如果可以通过web.xml 文件,请说明方法。
【问题讨论】:
标签: java jakarta-ee web.xml
您能否在web.xml 文件中指向实现ServletContainerInitializer 接口的类,还是必须在META-INF/services/javax.servlet.ServletContainerInitializer 下添加一个文件才能让J2EE 服务器接收它?
如果可以通过web.xml 文件,请说明方法。
【问题讨论】:
标签: java jakarta-ee web.xml
我检查了Java Servlet Specification 3.0,但没有发现任何可以通过web.xml 配置它的线索。我认为唯一的方法是
META-INF/services/javax.servlet.ServletContainerInitializer 文件。
请注意META-INF/services/javax.servlet.ServletContainerInitializer 是一个文件(不是目录),它必须包含初始化程序的完全限定名称,例如:
com.example.MyServletContainerInitializer
它也可能在战争中(用 Tomcat 7.0.21 测试)。
这是一个完整的例子:http://nullhaus.com/2011/03/using-servlets-3-0-servletcontainerinitializer/
【讨论】:
web.xml 中配置ServletContainerInitializer。来自 Servlet 3.0 Spec, 8.2.4:“在容器/应用程序启动时,容器通过 jar 服务 API 查找 ServletContainerInitializer 的实例。框架提供了ServletContainerInitializer 必须在 jar 文件的 META-INF/services directory 中捆绑一个名为 javax.servlet.ServletContainerInitializer 的文件,根据 jar 服务 API,该文件指向 ServletContainerInitializer 的实现类。"