【问题标题】:Tomcat 6.0.16 Undeploy doesn't remove MySQL JarTomcat 6.0.16 Undeploy 不会删除 MySQL Jar
【发布时间】:2013-01-13 23:23:55
【问题描述】:

我的系统上有以下配置。

JDK 1.6
Apache Tomcat 6.0.16
Windows 7

我正在使用mysql-connector-java-5.1.21 jar 文件。

我还在 Tomcat context.xml 文件中设置了以下参数

<Context antiResourceLocking="true" antiJARLocking="true">

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->

</Context>

当我取消部署我的应用程序时,它不会删除mysql-connector-java-5.1.21 jar,其他所有内容都会被删除。

当我尝试手动删除时,我收到以下错误消息:

File is open in Apache Tomcat

请帮忙

【问题讨论】:

  • 删除前需要先停止tomcat。我认为tomcat仍在通过驱动程序打开与数据库的连接,因此它不会让您删除文件
  • 是的,如果我停止 tomcat 服务,我可以删除该文件
  • 这个问题不是jar文件的问题。您的应用程序需要更好地处理事务,因此它不会永远保持连接
  • 在应用程序中,我们使用 Spring 和 Hibernate,因此数据库连接完全由这些框架处理。

标签: java locking tomcat6 mysql-5.1 undeploy


【解决方案1】:

Tomcat 6 在重新部署应用程序时存在一些类路径锁定问题。

应该始终有效的解决方案是停止 Tomcat 并删除包含 jar 的应用程序目录。

【讨论】:

  • 那是忙碌的工作!更换一些旧版本的mysql jar会解决问题吗?
  • @AnkurRaiyani 不,我认为问题出在 tomcat 6 上。确保所有与数据库的连接都已正确关闭。
  • 数据库连接及其生命周期由框架(Spring & Hibernate)处理。
猜你喜欢
  • 1970-01-01
  • 2013-10-02
  • 2014-06-15
  • 2014-08-20
  • 2011-01-15
  • 2012-10-08
  • 1970-01-01
  • 2013-06-22
  • 2010-12-09
相关资源
最近更新 更多