我目前的项目是用Java编写HTTP-Webserver。服务器每两秒检查一次“部署目录”并搜索名为content.jar
的文件。如果文件被更改,服务器就会部署它。该文件包含将由URLClassLoader
加载的servlet。在每个部署中都会创建一个新的类加载器。Web服务器部署问题
在另一个项目中,我的servlet正在开发中。我编写了一个Ant构建文件,用于创建content.jar
文件并将其移动到服务器的部署目录中。不幸的是,我得到一个Ant错误:
BUILD FAILED [path]\WebServerServlet\Ant\Build.xml:15: Unable to remove existing file [path]\WebServer\web\content.jar
我想,该文件被锁定由JVM文件系统 - 是有没有办法告诉Ant它不应该尝试删除和移动文件,而是改为将其覆盖?
否则,有没有人有一个想法如何通过更改我的部署系统来避免文件被JVM锁定?
编辑
我现在已经找到了解决办法! 在本question讨论我不得不添加的唯一的事情就是
URLClassLoader loader = new URLClassLoader(..);
//class loading stuff here
loader.close() //the line all the trouble was about
有了这个附录我的蚂蚁构建文件能够删除部署目录“旧”的罐子和移动新一成多吧。