提问者:小点点

jboss-all.xml JBoss EAP 6.4未考虑(不工作)


我有一个JBossEAP6实例,它有两个部署(一个EAR和几个WAR):

事情是这样的,在关机时,我需要在< code>myEar.ear之后取消部署< code>myWar1.war,但实际结果是< code>myEar.ear最后被取消部署,由于依赖关系导致关机日志中出现错误。

我已经尝试通过jboss-deployment-structure.xmlmyWar1.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正确识别,还是我漏了一些配置?


共1个答案

匿名用户

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。