【发布时间】:2016-08-25 02:18:12
【问题描述】:
我们有一个应用程序不断从我们的 3rd 方库加载 ServletContainerInitializer 实例。
一个实例是 JerseyServletContainerInitializer,另一个是 SpringServletContainerInitializer。这些来自 Jersey 和 Spring 的类似乎“接管”了我们的 servlet 上下文,扰乱了我们的映射和过滤器等。
我们确实需要显式配置 servlet 容器的 web.xml,而这种自动扫描让我们发疯。通过简单地在我们的 pom.xml 中引入一个依赖项,我们的运行时 ServletContext 配置(例如 Servlets/Filters/ContextListeners)会发生变化,因为 servlet 容器会在类路径中找到这些库。
有没有办法使用 Servlet 3 但禁用其烦人的自动类路径扫描“功能”?
【问题讨论】:
-
你真的尝试过用谷歌搜索“servlet 3 disable classpath scanning”吗?设置
<web-app metadata-complete="true">。 -
@Andreas 此配置不会禁用自动扫描,它只会在 lib 文件夹中禁用它,但它仍会查看 /class 文件夹。
-
@VitorCruz 由于部署良好的生产应用程序在
WEB-INF/classes文件夹中没有任何文件,因此影响不大。 -
@Andreas 你是什么意思? /WEB-INF/classes 是你放置 web 应用程序的类的地方,为什么一个部署良好的人不会使用这个文件夹?
-
@VitorCruz 因为部署良好的 webapp 也会将自己的文件打包到 jar 文件中。
标签: java spring tomcat servlets servlet-3.0