为了防止内存泄漏,已强制取消注册 JDBC 驱动程序

2023-12-13

当我运行网络应用程序时,我收到此消息。它运行良好,但我在关机期间收到此消息。

严重:Web 应用程序注册了 JBDC 驱动程序 [oracle.jdbc.driver.OracleDriver],但在 Web 应用程序停止时无法取消注册。为了防止内存泄漏,已强制取消注册 JDBC 驱动程序。

任何帮助表示赞赏。


从版本 6.0.24 开始,Tomcat 附带了内存泄漏检测功能,当 web 应用程序中存在 JDBC 4.0 兼容驱动程序时,这可能会导致出现此类警告消息/WEB-INF/lib哪个自动寄存器在 webapp 启动期间使用ServiceLoader API,但它并没有自动注销webapp 关闭期间自身。此消息纯粹是非正式的,Tomcat 已经采取了相应的内存泄漏预防措施。

你能做什么?

  1. 忽略这些警告。 Tomcat 正在正确地完成其工作。实际的错误是在其他人的代码(有问题的 JDBC 驱动程序)中,而不是在您的代码中。很高兴 Tomcat 正确完成了它的工作,并等待 JDBC 驱动程序供应商修复它,以便您可以升级驱动程序。另一方面,您不应该在 web 应用程序中删除 JDBC 驱动程序/WEB-INF/lib,但仅在服务器中/lib。如果你仍然把它保留在webapp的/WEB-INF/lib,那么您应该使用手动注册和注销它ServletContextListener.

  2. 降级到 Tomcat 6.0.23 或更早版本,这样您就不会被这些警告所困扰。但它会默默地不断泄漏内存。不确定知道这是否有好处。这些类型的内存泄漏是背后的主要原因之一OutOfMemoryError issues在 Tomcat 热部署期间。

  3. 将 JDBC 驱动程序移至 Tomcat 的/lib文件夹并具有连接池数据源来管理驱动程序。请注意,Tomcat 的内置 DBCP 在关闭时无法正确取消注册驱动程序。另请参阅错误DBCP-322它被关闭为 WONTFIX。您宁愿用另一个比 DBCP 更好的连接池来替换 DBCP。例如HikariCP也许Tomcat JDBC 池.

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

为了防止内存泄漏,已强制取消注册 JDBC 驱动程序 的相关文章

随机推荐

  • JavaScript 中的 getElementsByTagName [重复]

    这个问题在这里已经有答案了 我对纯 JavaScript 的语法很陌生 你知道为什么 getElementsByTagName 在我的简单测试中不起作用吗 var btn document getElementsByTagName butt
  • 将带有日期的 stderr 从 Cron 重定向到日志文件

    bash 脚本从 cron 运行 stderr 被重定向到日志文件 这一切都工作正常 代码是 10 5 22 opt scripts sql fetch 2 gt gt opt scripts logfile txt 我想将日期添加到日志文
  • Java:CompletableFuture.supplyAsync() 不调用异步方法[重复]

    这个问题在这里已经有答案了 让我们假设以下主要方法 public class Async public static void main String args throws Exception CompletableFuture supp
  • java 强制 JTextField 仅为大写

    有没有办法强制所有用户输入JTextFieldJava 中要大写吗 一个完整的工作示例可能会帮助你 import java awt Dimension import java awt FlowLayout import javax swin
  • 抓取动态数据硒 - 无法定位元素

    我对抓取非常陌生 有一个问题 我正在抓取世界计量仪的新冠数据 因为它是动态的 我用硒来做 代码如下 from selenium import webdriver import time URL https www worldometers
  • 正则表达式:匹配除一个单词之外的所有内容[重复]

    这个问题在这里已经有答案了 我正在寻找一种正则表达式模式 它可以匹配除一个单词之外的所有内容 例如 决议 monitors resolutions Should not match monitors 34 Should match moni
  • 从 C 代码设置 ALSA 主音量

    我一直在寻找一个简单的 C 代码示例来设置 ALSA 混音器的主音量 但找不到任何简单的内容来完成这个所谓的常见操作 我对 ALSA 完全不熟悉 所以制作我自己的最小示例需要时间 如果有人能提供一个 我会很高兴 以下内容对我有用 参数体积应
  • PHP SQL 更新数组

    我最初对以下内容感到满意 以便将第 1 行和第 2 行更新为相同的值 status 1 if POST sql UPDATE table SET status 1 WHERE id IN 1 2 db gt query sql if db
  • 正则表达式在匹配链接行为时删除 - Python

    我想删除整个链接 https www linkedin com in ACoAAAJv1l4BATlBOVqhEEaqrVNojJPWnID9Nk0 当链接包含ACo正则表达式应该从我的模式中删除整个链接 regex2 re compile
  • Asp.net 功能中是否存在带有验证器的电子邮件?

    我的要求是 如果用户在 asp net 文本框中输入电子邮件 它应该从数据库进行验证 该电子邮件是否存在 并且应该停止提交表单 是否有任何内置功能或者我必须自己制作 谢谢 阿提夫 你必须自己做 您可以按如下方式使用 AJAX
  • SQL Server:批量加载失败。数据文件中第 1 行第 1 列的列太长

    请有人在这里帮助我 已经看了几个小时了 但没有任何结果 我使用以下脚本在 SQL Express 2008 R2 中创建了一个表 CREATE TABLE Features ID int not null identity 1 1 Stop
  • 在 Delphi XE2 上使用运行时包进行构建

    我发现了类似的问题 但没有找到答案 问题是如何轻松地将所有已安装的运行时包添加到 Delphi XE2 项目中的 项目选项 包 运行时包 列表中 在 XE 和早期版本中 您可以通过简单地选中 取消选中 使用运行时包构建 来完成此操作 这些包
  • IntelliJ 在提交后显示 GIT 差异

    首先 我创建新分支 然后 我在类中添加一个新的代码行 Intellij 在左侧显示了我添加的新行的不同颜色 然后 我提交我的代码 此后 IntelliJ 不再显示我在左侧添加了新行 我不想要这样 我如何配置 IntelliJ 以便它显示与之
  • Doctrine 实体管理器导致页面中断

    我是 Symfony2 的新手 并尝试显示一个列出实体项目的页面 但是 一旦我使用下面的代码 分页符就会出现 未收到数据错误 或 ERR EMPTY RESPONSE 导致我认为我的路线不起作用并引发问题here但问题与教义有关 publi
  • Java 中希尔排序算法的变体

    有没有办法计算 for 循环的起点及其调整 原始循环有这些条件 for int gap a length 2 gap gt 0 gap 2 我调整它来设置希巴德希尔排序的条件并得到这个 for int gap int Math pow 2
  • 如何在 Rails 中渲染不同格式的一部分?

    我正在尝试生成包含一些 HTML 的 JSON 响应 因此 我有 app views foo bar json erb someKey some value someHTML 我想要它渲染 app views foo baz html er
  • 根据键值将数组拆分为更小的数组?

    我有在我的网站上执行关键字搜索的 mysql 搜索结果 它们按会员级别 0 3 排序 然而 我需要以不同的方式显示排名 比如排名 3 的格式比其他排名更突出 我正在考虑将行分成单独的数组 因此 像 array0 将包含排名为 0 的所有行等
  • 如何使用另一个字段登录 Django Allauth?

    我已经设置成功了django allauth以及自定义用户模型 让用户直接使用电子邮件和密码或通过 Facebook 登录 在这种情况下 电子邮件从 Facebook 获取并保存在自定义用户模型的电子邮件字段中 我还创建了一个移动字段 目前
  • 为什么 setTimeout(fn, 0) 有时很有用?

    我最近遇到了一个相当讨厌的错误 其中代码正在加载一个
  • 为了防止内存泄漏,已强制取消注册 JDBC 驱动程序

    当我运行网络应用程序时 我收到此消息 它运行良好 但我在关机期间收到此消息 严重 Web 应用程序注册了 JBDC 驱动程序 oracle jdbc driver OracleDriver 但在 Web 应用程序停止时无法取消注册 为了防止