`
daning
  • 浏览: 90154 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

tomcat中web应用反部署时jar包不能删除的问题

阅读更多
一个web应用部署到tomcat之后,WEB-INF中的lib目录下的jar文件,如果被使用到,是不能被删除的。这个是因为classloader打开了这些文件,这些文件被锁定了。这个现象在windows下存在,在linux下就不存在了。

其实这个问题在windows的JDK中似乎就有问题。就是使用URLClassLoader读取一个jar文件中的class,那么,这个jar文件会被锁定,这个进程结束前,是不能被删除的。特别是使用getResourceAsStream方法,一旦使用,即使使用System.gc()也没有用。另外,使用System.gc()太占资源了。

但是,如果是用.war文件部署的,删除.war包,那么对应的文件夹就会被删除。这个是怎么做到的?因为classloader本身没有提供stop或者remove class的方法。
tomcat的源代码中WebAppClassLoader中有stop方法,似乎可以释放jar文件。但是还没有仔细研究。

如果在context.xml中置顶anti-locking为true,那么lib/*.jar是可以被删除的。因为tomcat将这些文件的副本拷贝到了临时文件目录。这样只是锁定了副本。原有文件是可以被删除的。

以上是粗浅见解,那面有错。欢迎交流。
分享到:
评论

相关推荐

    webService部署tomcat需要的jax-ws jar包

    webService部署tomcat需要的jax-ws 的完整jar包

    Tomcat部署WEB项目

    Tomcat部署WEB项目,让你轻松部署自己的网站

    WSDD + TOMCAT 一键部署Webservices

    WSDD + TOMCAT 一键部署Webservices 配置工作: 1、将/wsdd/attachment下的axis.rar解压到tomcat的webapps文件夹下 2、配置/wsdd下的config.properties, #tomcat的路径 tomcat.path=e:/apache-tomcat-7.0.23 #...

    solr在Tomcat中的部署.zip

    solr在Tomcat上的完成部署 (1)准备工作:下载apache-tomcat-8.5.37,solr-7.7.1.tgz,Jdk1.8 解压solr7,进入solr7解压后的目录 (C:\Users\Administrator\Downloads\solr-7.7.1),复制并重命名solr-7.7.1目录里...

    servlet-api.zip Servlet必须的Jar包

    如果你在本机上安装了Tomcat,那么这个jar包一般都在tomcat安装目录\lib 文件夹下面有,当你把web项目部署到tomcat,会自动加载这个jar包来识别Serlvet一些对象。 当然你创建的是一个普通JavaProject,那么就需要...

    将项目打成jar包

    部署:将打包后的war文件部署到制定的web应用服务器中去。(tomcat的webappers中去) ******************************* ant默认执行build.xml文件 ant是使用的java文件编写,所以具有跨平台的特性。 再使用ant执行...

    java.servlet的jar包

    支持servlet的jar包。应该叫servlet-api.jar 你如果编写过servlet就...如果你安装了Tomcat,这个jar包一般在tomcat安装目录\lib 文件夹下面有,当你把web项目部署到tomcat,会自动加载这个jar包来识别Serlvet一些对象。

    将WEB项目以war包形式部署到tomcat中

    注意如果*.jar文件没有放在WEB-INF/lib下,那么在打包前先将所有的jar文件放到 WEB-INF/lib下。

    apache-tomcat-7.0.82

    通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将...

    ejb分离部署web工程可能要用到的包

    ejb工程部署到jboss上,web工程部署到tomcat上,可能要用到的包!有些工程是需要另外放这些包的!我做的项目就要...呵呵~~

    在Java Web-IDEA中配置Tomcat功能.docx

    lib 专门用来存放 Tomcat 服务器的 jar 包 logs 专门用来存放 Tomcat 服务器运行时输出的日记信息 temp 专门用来存放 Tomcdat 运行时产生的临时数据 webapps 专门用来存放部署的 Web 工程 work 是 Tomcat ...

    websocket+tomcat+java环境部署和实现.doc

    文档部分摘录:下载myeclipse10以上...打开myeclipse新建web project :testRight 因为是myeclipse10没有javaee7选项这里用javaee5,后面再导入javaee 里的支持websocket的jar包(2014版myeclipse直接勾选javaee7),

    tomcat加载jar异常问题的分析与解决

    项目使用springboot启动一个web项目,在启动阶段看到console中出现了异常“1.10.3-1.4.3\hdf5.jar 系统找不到指定的文件”,虽然这些异常不影响项目的正常运行,但作为一个严谨的技术人员,看到这些异常就像见到...

    WSServletContextListener 所需jar包

    已经经过测试,当你想将SOAP-BASED web servcie部署到tomcat时,先映射为servlet,而用lisenter产生此实例,配置文件为sun-jaxws.xml.但需要你在web-inf/lib下加入所需jar包才可以

    基于内嵌apache-tomcat-8.0.24的应用开发

    为什么使用内嵌Tomcat开发?...基于内嵌apache-tomcat-8.0.24的应用开发解决了网上提供省了el-ri相关jar 包的问题,此项目可以直接部署到myeclispe中直接运行EmbededTomcat类就可以执行内嵌tomcat运行web程序

    servlet-api2.5 jar包.rar

    servlet就知道要用到HttpServletRequest和HttpServletResponse等对象...如果你安装了Tomcat,这个jar包一般在tomcat安装目录\lib 文件夹下面有,当你把web项目部署到tomcat,会自动加载这个jar包来识别Serlvet一些对象。

    润乾报表在web工程中的部署

    润乾报表在java web工程中的部署,包括web.xml和tomcat 中server.xml的配置,和需要向工程中需要导入 润乾报表的哪些.jar包和oracle数据库的哪些.jar包……

    Eclipse+CXF开发Web服务、Tomcat部署

    将解压后 apache-cxf-2.6.1 文件夹 lib 文件夹中的 JAR 文件导入工程下 WebContent/WEB-INF/lib 中,或直接复制到相应文件夹下,刷新工程。

    Java Web应用开发:工程搭建.docx

    项目工程搭建 1 创建工程 创建Dynamic web project,取名为estore,tomcat和版本选择如下图所示。... ...2 创建文件夹及拷贝资源文件 ... ...将MySQL的JDBC驱动JAR包拷贝到WebContent/WEB-INF/lib文件夹中。

    servlet所需jar包文件

    部署Tomcat与启用web项目所需的servlet-api源文件

Global site tag (gtag.js) - Google Analytics