5

我目前正在使用 Spring Web MVC 和 Spring Security 开发应用程序。

我可以在 Glassfish 3.1.2 上部署它,但是当我想在修复一些错误后重新部署时,我收到此错误:

WARNING: Exception while locating sub archive: XXX.war
WARNING: DPL8031: Ignoring XXX_war/ because the containing archive C:\dev\apps\glassfish3\glassfish\domains\domain1\applications\XXX recorded it as a pre-existing stale file

.glassfishStaleFiles 包含:

XXX_war/
XXX_war/WEB-INF/
XXX_war/WEB-INF/lib/
XXX_war/WEB-INF/lib/spring-web-3.2.2.RELEASE.jar

事实上,spring-web-3.2.2.RELEASE.jar 仍然存在,当我尝试删除它时,我收到一条消息,指出它仍在被 JVM 使用。

我找到了这个链接: https ://www.java.net//forum/topic/glassfish/glassfish/stale-files-when-undeploying-web-app-glassfish-3

我的问题是:有人有解决这个问题的方法吗?

开发的时候真的很烦。。。

4

2 回答 2

8

为了纠正这个问题,我有一个更简单的解决方案:
假设您的 EAR 文件是正确的:

  1. 停止服务器
  2. 转到您的 EAR 目录:C:\java_apps\glassfish3\glassfish\domains\domain1\applications\XXX_EAR
  3. 删除名为 .glassfishStaleFiles 的文件
  4. 重新启动服务器并重新部署 EAR 文件

它对我有用。

于 2014-02-28T22:08:18.930 回答
4

好的,经过几天的研究...

我终于找到了解决方法。

我的项目层次结构是:

XXX.ear
--- lib/
------ XXX_Entities.jar
--- XXX_Ejb.jar
--- XXX_EjbClient.jar
--- XXX_Web.war
------ WEB-INF/lib/
--------- *libraries*

现在 :

XXX.ear
--- lib/
------ XXX_Entities.jar
------ *libraries*
--- XXX_Ejb.jar
--- XXX_EjbClient.jar
--- XXX_Web.war

然后将 lib 文件夹添加到 EAR 部署程序集,它就可以工作了。Glassfish 在取消部署时正确卸载。

于 2013-05-10T10:40:29.790 回答