我有一个JBossEAP6实例,它有两个部署(一个EAR和几个WAR):
事情是这样的,在关机时,我需要在< code>myEar.ear之后取消部署< code>myWar1.war,但实际结果是< code>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-all.xml
正在被JBoss读取和解析,但它对EAR上依赖的WAR的取消部署顺序没有影响。(我想这不是预期的行为,如这里所述。)
所有的WAR都是通过JBoss CLI部署的(然后服务器重新启动),但是myEar.ear
在服务器/deployments
内部被分解,它也通过CLI作为部署添加。以下是独立完整.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-all.xml被jboss正确识别,还是我漏了一些配置?
jboss-all.xml 中的部署依赖项标记通常仅用于确保在建立依赖项后部署应用程序(如在您的示例中,必须在mywar1部署之前部署many),而不用于关闭。
通常,JBoss的命令行命令(查找JBoss CLI)用于处理启动、部署和关闭,但CLI不应在程序代码中调用。对于管理接口,有一个称为管理api的并行api,它具有关闭/启动功能,可以从代码中调用。
AS7管理API适用于JBoss EAP6.x,最新的Wildfly版本的API也是如此。只有wildfly api被认为是api最新的页面,它通过YMMV列出了启动/关闭过程。这里是wildfly API和6.x/AS7 API,以防使用wildfly引用遇到问题。以下是如何以编程方式使用管理接口API。