我有一个JBoss EAP 6实例,它有几个部署(一个EAR和一些WAR):
关键是,在关机时,我需要在myWar1.war
之后取消部署myEar.ear
,但实际结果是最后取消部署myEar.ear
,导致关机日志出错由于依赖。
我已经尝试通过jboss-deployment-structure.xml
和myWar1.war/WEB-INF/jboss-all.xml
将这场战争的依赖性声明到耳边。以下是示例:
<dependencies>
<module name="deployment.myEar.ear">
<imports>
<exclude path="***" />
</imports>
</module>
<module name="javax.annotation.api" />
</dependencies>
<?xml version="1.0" encoding="UTF-8"?>
<jboss umlns="urn:jboss:1.0">
<jboss-deployment-dependencies xmlns="urn:jboss:deployment-dependencies:1.0">
<dependency name="myEar.ear" />
</jboss-deployment-dependencies>
</jboss>
这些解决方案似乎都不起作用。虽然看起来JBoss正在读取和解析jboss-all.xml
,但它对EAR上依赖WAR的取消部署顺序没有影响。 (我想这不是预期的行为,因为状态为HERE。)
所有WAR都通过JBoss CLI部署(然后服务器重新启动),但myEar.ear
正在服务器/deployments
内部爆炸,并且它也通过CLI添加为部署。以下是standalone-full.xml
中的条目。
此外,WAR是一个SpringBoot应用程序,由Maven构建和打包。
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-enabled="false" scan-interval="5000"/>
</subsystem>
<deployments>
. . .
<deployment name="myWar1.war" runtime-name="myWar1.war">
<content sha1="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>
</deployment>
<deployment name="myEar" runtime-name="myEar.ear">
<fs-exploded path="$JBOSS_HOME/standalone/deployments/myEar.ear"/>
</deployment>
. . .
</deployments>
关闭JBoss时,还有其他方法可以改变取消部署顺序吗?有没有办法让JBoss正确识别jboss-all.xml,或者我缺少一些配置?
答案 0 :(得分:1)
在建立依赖关系后,jboss-all.xml中的部署依赖关系标记通常为referenced only for ensuring applications deploy(如示例中myear必须在mywar1部署之前部署)但不是关闭。
通常JBoss&#39;命令行命令(查找JBoss CLI)用于处理启动,部署和关闭,但不打算从程序代码中调用CLI。管理接口有一个名为Management API的并行api,它具有关闭/启动功能,可以从代码中调用。
AS7 Management API适用于JBoss EAP 6.x,最新的Wildfly版API也适用。只有wildfly api应该是API的最新页面,它列出了YMMV的启动/关闭程序。如果您使用wildfly引用遇到问题,则the wildfly API和6.x/AS7 api如下。以下是Management Interface API programmatically.
的使用方法