首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webserver服务器部署问题

Webserver服务器部署问题
EN

Stack Overflow用户
提问于 2014-01-10 09:15:05
回答 1查看 71关注 0票数 0

我当前的项目是用Java编写一个。服务器每两秒钟检查一次“部署目录”,并搜索名为content.jar的文件。如果文件被更改,服务器将部署它。该文件包含由URLClassLoader加载的servlet。在每个部署中都会创建一个新的类加载器。

在另一个项目中,我的servlet正在开发中。我编写了一个Ant构建文件,该文件创建content.jar文件并将其移动到服务器的部署目录中。不幸的是,我得到了一个Ant错误:

生成失败的path\WebServerServlet\Ant\Build.xml:15:无法删除现有文件path\WebServer\web\content.jar

我假设这个文件是由JVM锁定在文件系统上的--有没有办法告诉Ant不应该尝试删除和移动文件,而应该重写它呢?

否则,有人知道如何通过更改我的部署系统来避免JVM锁定文件吗?

编辑

我现在找到了解决办法!正如在这个问题中所讨论的,我必须添加的唯一一件事情是

代码语言:javascript
复制
URLClassLoader loader = new URLClassLoader(..);
//class loading stuff here
loader.close() //the line all the trouble was about

有了这个附录,我的Ant-buildfile就能够删除部署目录中的“旧”jar,并将新的jar移动到其中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-10 10:40:12

我怀疑类加载器有一个锁在罐子上。无论哪种方式,在锁被释放之前,您都无法移动、删除或修改它。

解决方案是编写您自己的类加载器。应该是这个定制的类加载器监视jar的更改,而不是服务器,然后相应地重新加载类。

在编写类加载器以执行动态重新加载时涉及到许多问题--幸运的是,它已经解释了这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21040219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档