0

我有一个使用 j2ee 和 java 构建的 Web 应用程序,用户可以在其中上传 jar 或删除现有的 jar 并上传一个新的。由于服务器正在运行并且 jar 被它锁定,当用户选择删除 jar 时,我无法删除它。有没有办法做到这一点?当我用谷歌搜索时,我得到了有关热部署或使用类加载器卸载 jar 然后删除它的信息。这样做的好方法是什么?任何帮助或建议将不胜感激。

4

1 回答 1

3

如果该文件正在被 Web 服务器使用,则文件系统根本不允许您删除该文件,因为它已被 Web 服务器锁定。你有两个选择。

您可以热部署 jar 的新副本,例如,如果这是一场战争,说您有(为了争论,假设 tomcat)...

ROOT.war,您可以复制到 webapps 目录中ROOT#001.war,所有流量都将移动到该位置。这场新的战争可能包含你的新罐子。

我个人只是谨慎地这样做,因为我相信 Web 服务器在重新启动时会更好地释放资源。除此之外,如果您想安全地动态部署 jar,您唯一真正的选择是停止 Web 服务器,应用 jar,然后重新启动。如果您不想停机,您可以考虑集群环境,但这实际上取决于它对您的业务关键程度。

于 2013-05-21T10:05:53.050 回答