如何禁用 Servlet 3.0 扫描和自动加载组件

2023-11-26

我们有一个应用程序不断从我们的第 3 方库加载 ServletContainerInitializer 实例。

一个实例是 JerseyServletContainerInitializer,另一个实例是 SpringServletContainerInitializer。 Jersey 和 Spring 中的这些类似乎“接管”了我们的 servlet 上下文,与我们的映射和过滤器等打乱。

我们确实需要显式配置 servlet 容器的 web.xml,而这种自动扫描让我们发疯。通过简单地在 pom.xml 中引入依赖项,我们的运行时 ServletContext 配置(例如 Servlet/Filters/ContextListeners)就会发生变化,因为 servlet 容器在类路径上找到这些库。

有没有办法使用 Servlet 3 但禁用其烦人的自动类路径扫描“功能”?


From https://wiki.apache.org/tomcat/HowTo/FasterStartUp

有两个选项可以在 WEB-INF/web.xml 中指定 文件:

  • 元素上设置metadata-complete="true" 属性。
  • 添加一个空的 元素。

设置metadata-complete=“true”会禁用扫描您的网络 应用程序及其使用注释的类库 定义 Web 应用程序的组件(Servlet 等)。这 元数据完成选项不足以禁用所有注释 扫描。如果有带有@HandlesTypes注解的SCI,Tomcat 必须扫描您的应用程序以查找使用注释或的类 该注释中指定的接口。

元素指定哪个 Web 片段 JAR (根据其 WEB-INF/web-fragment.xml 文件中的名称)有 扫描 SCI、片段和注释。一个空的 元素配置不扫描任何内容。

在 Tomcat 7 中,绝对排序选项会影响以下两者的发现 Web 应用程序提供的 SCI 和容器提供的 SCI (即通过 $CATALINA_HOME/lib 中的库)。在 Tomcat 8 中该选项 仅影响 Web 应用程序,而容器提供的 无论绝对顺序如何,SCI 总是会被发现。在这样的 如果单独使用绝对排序选项并不能阻止扫描 注释,但要扫描的 JAR 列表将为空,并且 这样扫描就会很快完成。班级在 无论绝对顺序如何,始终都会扫描 WEB-INF/类。

不扫描Web应用程序资源和TLD扫描 受这些选项的影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何禁用 Servlet 3.0 扫描和自动加载组件 的相关文章

  • 查看Java Agent修改的Java类的源代码

    我需要了解 Java 代理如何修改我的初始类 以便我能够理解代码的作用 build gradle configurations jar archiveName agent2 jar jar manifest attributes Prema
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 自定义列表字段点击事件

    我正在编写一个应用程序 其中我创建了用于显示列表视图的自定义列表字段 我的 CustomListField 包含连续的一个图像和文本 我正在通过单击列表字段行获取字段更改侦听器 但我也想将字段更改侦听器放在图像上 谁能告诉我我该怎么做 这是
  • 未装饰窗户的 Windows Snap 功能?

    有谁知道如何允许未装饰的窗户使用此功能 唯一的选择就是重新实施它 有任何想法吗 谢谢 可停靠可能是唯一的JToolBar http docs oracle com javase tutorial uiswing components too
  • 如何从控制器访问片段中的片段?

    我有一个名为 cutleryCustomerSearch 的视图 其中包含 替换 一个片段 div div div div 在此片段中 我有一个表 我喜欢通过 ajax 更新它 table 我如何设置处理 ajax 请求的控制器方法的返回
  • 如何向我的 Spring MVC REST 服务添加错误?

    如果用户没有输入我正在编码的两个名称 我如何更改 更新来自 Spring MVC 的以下 REST 调用以返回错误 未找到 RequestMapping value name method RequestMethod GET Respons
  • GWT、Maven、Spring - 在 Maven 构建上获取 com.thoughtworks.qdox.parser.ParseException:语法错误

    我正在尝试集成此演示中的代码 http code google com p gwt spring starter app http code google com p gwt spring starter app 进入我的主要 Spring
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • IntelliJ Idea:将简单的 Java servlet(无 JSP)部署到 Tomcat 7

    我尝试按照教程进行操作here http wiki jetbrains net intellij Creating a simple Web application and deploying it to Tomcat部署 servlet
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 如何使用 Jersey 将嵌套列表封送为 JSON?我得到一个空数组或一个包含数组的单元素字典数组

    我正在开发一个使用 Jersey 将对象转换为 JSON 的项目 我希望能够写出嵌套列表 如下所示 data one two three a b c 我想要转换的对象首先将数据表示为 gt gt 我认为 Jersey 会做正确的事情 以上输
  • 我们如何使用 thymeleaf 绑定对象列表的列表

    我有一个表单 用户可以在其中添加任意数量的内容表对象这也可以包含他想要的列对象 就像在 SQL 中构建表一样 我尝试了下面的代码 但没有任何效果 并且当我尝试绑定两个列表时 表单不再出现 控制器 ModelAttribute page pu
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • 什么是 Java2D 处理程序线程?

    我创建了一个使用 Hibernate 的示例 java 应用程序 当我进行线程转储时 我观察到一个名为 Java2D Disposer 的奇怪线程 有人能告诉我该线程的功能吗 AWT 系统中的某些实体需要最终确定以释放资源 最突出的例子是j
  • Java 的“&&”与“&”运算符

    我使用的示例来自 Java Herbert Schildt 的完整参考文献 第 12 版 Java 是 14 他给出了以下 2 个示例 如果阻止 第一个是好的 第二个是错误的 因此发表评论 public class PatternMatch

随机推荐

  • 将字符串转换为Scheme中的代码

    如何将字符串转换为PLT方案中相应的代码 不包含string gt input port方法 例如 我想转换这个字符串 1 0 1 0 0 进入这个列表 1 0 1 0 0 是否可以在不打开文件的情况下执行此操作 方案有程序read用于从输
  • onEdit(e) 在附加组件中不起作用

    我编写了一个脚本 在本机电子表格中使用时效果很好 我现在尝试将其作为附加组件发布 并且发现onEdit e 不工作 当onOpen e and onInstall e 工作正常 我已经查看了有关授权模式和安装 启用附加组件的文档 但我认为我
  • 无法禁用 Core i7 中的硬件预取器

    我在尝试禁用 Core i7 系统中的硬件预取器时遇到错误 我按照链接中的方法进行操作如何以编程方式禁用硬件预取 在我的系统中 grep i msr boot config uname r CONFIG X86 DEBUGCTLMSR y
  • 无法解析的外部符号 _declspec(dllimport)

    我在 Visual Studio 中为我的控制台应用程序创建了一个 DLL 在我的 DLL 中 我有一个名为 Dialog MainMenu 的类 其中有一个 cpp 文件和一个 h 文件 以下错误消息 错误9错误LNK2001 无法解析的
  • runST 与 unsafePerformIO 的实际影响

    我想要类似的东西 f forall m Mutable v PrimState m r gt m gt v r gt v r illegal signature f gs x runST do y lt thaw x foldM g gt
  • 如何在大量数字中插入空格以使其更具可读性?

    我想出了这个 因为 stackoverflow 上提供的其他示例是用 C 编写的 string number fmt ulong n cout lt lt lt lt n lt lt lt lt endl char s 128 sprint
  • MongoDB + Node.js:无法正确插入日期

    我一直在使用节点 mongoskin连接这两个 一切都很好 直到我查询了一些 日期 字段 我认为该字段应该作为 javascript 返回Date目的 但结果的类型是字符串 这对我来说很奇怪而且不方便 插入看起来像这样 var doc da
  • 根据Python列表从yaml文件中检索数据

    我在 ipython 工作 我有一个 Yaml 文件和一个与我的 Yaml 文件相对应的 thomas id 列表 thomas 文件下第三行 下面只是该文件的一小部分 完整的文件可以在这里找到 https github com 108mi
  • 为什么选择 MVVM?它的核心优势是什么? [复制]

    这个问题在这里已经有答案了 为什么在处理 WPF 时我们选择 MVVM 而不是 MVC 或 MVP 使用它我们可以获得什么额外的好处 Edit 说实话 今天我去面试 也被问到了这个问题 我回答像 INotifyPropertyChanged
  • 删除flash 9中的右键菜单

    是否可以使用actionscript 3禁用右键菜单 非常感谢任何帮助 您可以使用 stage showDefaultContextMenu false 隐藏除设置选项之外的所有内容
  • Python urllib2 自动填表并检索结果

    我希望能够在站点上查询运行该脚本的计算机的保修信息 如果需要 它应该能够填写表格 例如惠普服务站点的情况 然后能够检索生成的网页 我已经准备好解析返回的结果 html 我只是遇到了麻烦 需要做什么才能对需要放入字段中的数据进行 POST 然
  • @id 和 @+id 有什么区别?

    我刚刚开始使用android 已经完成了大约5个布局文件 然而 我刚刚意识到我一直在互换使用 id和 id 但我不确定两者之间的确切区别是什么 你需要使用 id当您为视图定义自己的 Id 时 正是来自docs 字符串开头的 at 符号 表示
  • Objective-C 中 nil、NIL 和 null 的区别

    我想知道之间的区别nil NIL and null 我用谷歌搜索了一下 发现了这个 nil gt 指向 Objective C 对象的空指针 NIL gt 指向 Objective C 类的空指针 null gt 指向原始类型的空指针或缺少
  • Spring中如何根据配置创建多个相同类型的bean?

    我正在尝试在 Spring 中创建指定数量的相同类型的 bean 我试过了 Bean name beanList public List
  • Git 列出不存在的遥控器

    我最近在 Git 存储库配置文件中对远程存储库进行了一些更改 我重命名了远程名称 将我的起源更改为另一个远程存储库并重命名我的旧起源 例如 我之前有过这样的 remote origin url blah blah remote future
  • org.hibernate.LazyInitializationException:无法初始化代理 - 无会话

    我有 2 台物理服务器 我的 Web 应用程序由负载均衡器管理它们 我总是得到 org hibernate LazyInitializationException 无法初始化代理 无会话 当其中一台服务器受到攻击而另一台服务器运行顺利且没有
  • 反序列化 JSON,属性名称中包含点

    我正在尝试将属性名称中带有点的 JSON 反序列化为键值格式 我正在使用内置的 ASP NET MVC 模型绑定 它似乎将点解释为对象表示法 而不仅仅是键值对象 有没有办法让它正确反序列化为忽略点的键值 这很重要 因为数据需要以这种格式再次
  • 如何在Angular2中上传文件

    我必须提交表格和图像 我已经尝试过这段代码 通过多种方式 但对我不起作用 有没有人有使用 angular2 上传文件的工作演示 请帮助我 组件 html
  • 根据背景反转油漆颜色

    我正在写一个自定义进度条 我想创建类似的效果 其中 50 文本颜色动态更改为白色 而黑色条向右移动 使用 简单 的解决方案可能吗 我查阅了 PorterDuff ColorFilters xFermodes 似乎没有任何效果 有任何想法吗
  • 如何禁用 Servlet 3.0 扫描和自动加载组件

    我们有一个应用程序不断从我们的第 3 方库加载 ServletContainerInitializer 实例 一个实例是 JerseyServletContainerInitializer 另一个实例是 SpringServletConta