JBoss在展开的部署目录上重新部署更改

在没有重新启动JBoss的情况下搜索部署新更改的方法引发了我的注意:

https://community.jboss.org/wiki/RedeployAnApplicationWhenChangeAFileInAnExplodedDeploymentDirectory

起初,我以为我刚刚找到了圣杯,触摸爆炸目录上的顶级描述符将重新部署新的更改,但随后开始出现奇怪的行为和错误。

事实certificateservlet和Java类没有重新部署,在阅读了许多负面答案之后,我放弃了这一点,但至少我想知道,在触及顶级描述符之后重新部署了什么?

如果你们需要知道,我正在部署一个Java EE项目作为对JBoss 4x的战争。

虽然应用程序实际上是重新部署的,但默认情况下并没有真正删除工作目录(这是JBoss保存已编译的jsp的地方),因此在重新部署之后它可能会保留以前编译的jsp类。

在JBoss 5.1中(我不确定它是否在JBoss 4.x中可用),有一个选项可以强制JBoss在取消部署时删除应用程序的工作目录 – 重新部署。 您可以在以下位置找到此选项:$ JBOSS_HOME / server / yourInstance / deployers / jbossweb.deployer / META-INF / war-deployers-jboss-beans.xml,在此文件中查找属性:

true 

默认情况下,它设置为false,因此将其设置为true。 也许在重新部署时可能有助于解决您的问题,尽管热部署的成功可能取决于对其他类的依赖性等。另一方面,在热部署或重新部署应用程序时,使用move命令(mv),但从不复制(cp)一,因为mv是primefaces的而不是cp(使用cp时,可以在文件仍被复制时激活热部署扫描程序)。

热重新部署的另一个解决方案是手动删除它(建议仅用于开发环境)我们使用以下命令链(请记住,您已经在deploy目录中):

 rm yourapp.war; rm -rf ../work/jboss.web/localhost/yourapp;mv /yourapp.war . 

但请记住, 强烈建议不要在生产和关键环境中进行热部署。