当我使用 Tomcat 7 JDBC 连接池取消部署 Web 应用程序时,为什么连接仍然存在?

2024-03-12

我已经将一个最小的 Spring Web 应用程序部署到 Tomcat 7.0.22 - 它由几个页面、一个控制器、一个服务和一个 DAO 组成,该 DAO 有一个运行 SELECT 查询的方法。

Web 应用程序配置为使用新的Tomcat JDBC 连接池 http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html- 这是 webapp 的 context.xml 中的资源配置:

<Resource name="jdbc/myDB"
          auth="Container"
          type="javax.sql.DataSource"
          driverClassName="oracle.jdbc.OracleDriver"
          url="jdbc:oracle:thin:@blah blah"
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
          maxActive="15"
          initialSize="5"
          maxWait="40000"
          validationQuery="select 1 from dual"
          removeAbandoned="true"
          removeAbandonedTimeout="300"
          logAbandoned="false"
          username="user"
          password="pass"
          testOnBorrow="true"
          validationInterval="30000"
          timeBetweenEvictionRunsMillis="60000"
          minEvictableIdleTimeMillis="60000" />

当我部署 web 应用程序时,我看到出现 5 个连接(从 SQL Developer 查询 v$session)。当我取消部署 web 应用程序时,连接仍然存在(处于等待状态)。每次我重新部署我的 web 应用程序时,都会出现 5 个新连接。

看来池仍然存在 - Tomcat 管理器应用程序上的“查找泄漏”按钮告诉我该应用程序正在泄漏内存。

当网络应用程序取消部署时,如何摆脱池?


这个问题是自己造成的(就像大多数问题一样)。我的数据源是在我的 web 应用程序的 web.xml 中配置的,我通过 JNDI 引用它。我现在创建数据源,如 Spring 参考文档中所示(第13.3.1节 http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/jdbc.html#jdbc-datasource)和destroy方法负责关闭数据源和池。

如果我被要求坚持使用 JNDI 数据源,我将不得不在实现的类中关闭数据源ServletContextListener, 在里面contextDestroyed method.

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

当我使用 Tomcat 7 JDBC 连接池取消部署 Web 应用程序时,为什么连接仍然存在? 的相关文章

随机推荐

  • 如何手动渲染表单字段并设置其初始值?

    我正在尝试手动渲染表单的字段 以便我的设计师同事可以操作 HTML 中的输入元素 而不是在 Python 源代码中苦苦挣扎 IE 而不是像这样声明表单字段 form first name 其实我确实
  • 静态发布和 HTTPS

    遵循这个问题 大型网站上 Silverstripe 的静态发布 https stackoverflow com questions 46313840 static publishing in silverstripe on large si
  • 生成偶数随机数

    我需要一个代码来仅生成随机偶数 2 100网上有生成随机数的教程 但它们有奇数和偶数 请理解我只需要生成偶数 1 生成数字1 50 2 将所有数字乘以2 所有数字乘以 2 都是偶数
  • Selenium 使用相对 XPath 定位器显式等待

    将 Selenium WebDriver 与 Python 3 4 结合使用 我正在编写一个抓取工具 并使用相对于某些非根祖先元素的 XPath 来定位元素 如下所示 ancestor element driver find element
  • Julia 中的并行梯度计算

    不久前我被说服放弃我舒适的 matlab 编程并开始使用 Julia 编程 我已经在神经网络方面工作了很长时间 我认为现在有了 Julia 我可以通过并行计算梯度来更快地完成工作 不需要一次性对整个数据集计算梯度 相反 我们可以拆分计算 例
  • SQL 中的标准差命令

    在 C 中从数据库检索数据后 我必须实现标准差 我必须从字段名称中检索一组值income其中性别是male or female 有没有直接计算标准差的SQL命令 或者我应该使用 C 单独计算它 Try the STDEV http msdn
  • 将 C++ 字符串变量转换为 long

    我有一个变量 string item 它在运行时初始化 我需要将其转换为长 怎么做 我尝试过 atol 和 strtol 但对于 strtol 和 atol 总是分别出现以下错误 cannot convert std string to c
  • 模板 typedefs - 你的工作是什么?

    C 0x 有模板别名 有时称为模板类型定义 看here http en wikipedia org wiki C 2B 2B0x Alias templates 当前的 C 规范没有 您喜欢用什么来解决问题 容器对象还是宏 你觉得值得吗 您
  • jQuery Mobile 使用 AJAX 数据增长文本区域

    我正在通过以下方式将文本加载到输入框 textarea val ajaxData 但是它不会自动增长 并且我的数据未完全显示 有什么方法或任何东西可以调用来强制更新吗 确实有一个内部函数负责调整大小 称为resizeCheck 但是 该函数
  • 如何使用 Javascript/Jquery 添加子元素

    我需要一位帮助 我需要使用 Javascript Jquery 中的按钮单击来添加子元素 我将在下面解释我的代码 div class form group div
  • RMarkdown / pandoc 无法使用乳胶颜色命令编织 Pdf

    Mac 操作系统 10 11 6 R版本 3 3 1 MacTex 2016 TexLive 6 2 2 RMarkdown 1 0 9014 针织 1 14 潘多克 1 17 当乳胶命令如下时 RMarkdown 无法编织 PDF tex
  • 如何将参数传递给使用“include”呈现的PHP模板?

    需要 PHP 模板方面的帮助 我是 PHP 新手 我来自 Perl Embperl 无论如何 我的问题很简单 我有一个小模板来渲染一些项目 让它成为一篇博客文章 我知道使用此模板的唯一方法是使用 include 指令 我想在遍历所有相关博客
  • DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER 错误

    我的包由动态数据库连接组成 当我运行我的包时 它抛出类似 DTS E CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER 的错误 对连接管理器 conn 的 AcquireConnection 方法调用
  • Bash:当子脚本捕获 SIGINT 时,为什么父脚本不会在 SIGINT 上终止?

    脚本1 sh bin bash script2 sh echo after script 脚本2 sh bin bash function handler exit 130 trap handler SIGINT while true do
  • Hibernate使用PostgreSQL序列不影响序列表

    我已将 Hibernate 配置为使用 PostgreSQL 序列 通过注释 来生成主键值id栏目如下 Id SequenceGenerator name pk sequence sequenceName entity id seq Gen
  • Tapestry 5.4:如何使用外部 dist 包?

    我想使用 swagger ui 中的 dist 包来公开我的 web 服务 dist pkg 位于此处 https github com swagger api swagger ui tree master dist https githu
  • 核心数据不保存对 Transformable 属性的更改

    我正在保存一个NSMutableArray在我的核心数据存储中的 Transformable 属性中 我可以使用中的数据正确创建实体NSMutableArray然后将其从属性中加载出来 甚至进行更改 当我浏览我的应用程序并重新访问它时 我的
  • 如何在jsp中显示从dao获取的数据

    in jsp table width 100 border 0 cellspacing 2 cellpadding 2 tr class tab highlighted 2 td class tab highlighted 2 width
  • 如何创建php调度进程?

    我被要求创建一个网络应用程序 它将在特定时间内向用户发送更新 例如 2009 年 6 月至 8 月期间 user1 每 5 分钟请求一次更新 user2 仅今天每 10 分钟请求一次更新 从 2009 年 6 月到 8 月 user3 每
  • 当我使用 Tomcat 7 JDBC 连接池取消部署 Web 应用程序时,为什么连接仍然存在?

    我已经将一个最小的 Spring Web 应用程序部署到 Tomcat 7 0 22 它由几个页面 一个控制器 一个服务和一个 DAO 组成 该 DAO 有一个运行 SELECT 查询的方法 Web 应用程序配置为使用新的Tomcat JD