【问题标题】:How to control order of deployment (EJB first and then MBeans deployment) in Wildfly 8.2.0 AS如何在 Wildfly 8.2.0 AS 中控制部署顺序(EJB 先部署后 MBeans 部署)
【发布时间】:2015-07-03 11:44:57
【问题描述】:

我正在将包含 MBean 的 EAR 应用程序从 JBoss 6 AS 迁移到 Wildfly 8.2.0 AS。在我的 EAR 应用程序中,MBean 在初始化之前依赖于 EJB。

JBoss 6 AS中,MBean中使用的@DependsOn注解保持了部署的顺序,即依赖的EJB被部署,然后,MBean被部署。

Wildfly 8.2.0 中,我正在尝试实现相同的功能,而@DependsOn 不起作用。

我在jboss-service.xml 中尝试了以下方法,仅在部署EAR 文件后才部署MBean,但这并没有发生。

 <mbean code="sample.HelloWorldService" name="sample:service=HelloWorld,id=1">
    <depends>jboss.j2ee:service=EARDeployment,url='application.ear'</depends>
</mbean>

我也在 E​​JB 中尝试了@startup,但我无法控制顺序,即 1. EJB 部署 2. MBeans 部署。

任何人都可以帮助了解如何控制Wildfly 8.2.0 中的部署顺序。我需要先部署 EJB,然后再部署 MBean。非常感谢。

【问题讨论】:

    标签: ejb-3.1 wildfly-8 jboss6.x mbeans


    【解决方案1】:

    只是评论

    关于你想从MBeans中获取的EJB,可能你对jboss-deployment-structure.xml的具体操作有误解。它表示单例组件之间的初始化依赖关系(即使相关的 EJB 是单例的,也要注意 DependsOn 可能存在的问题,例如 WLFY-4251)。

    解决方法

    由于您正在使用 Jboss/Wildfly 服务器,您可以选择使用 jboss-deployment-structure.xml 来指定模块之间的依赖关系。 也许,当您将所有内容打包在同一个 EAR 应用程序中时,您可以将组件分成模块,假设一个 MBean.sar 模块包含 MBean 和其他 RelatedEJBs.jar 带有 MBean 引用的 EJB 的模块。

    然后你定义MBeans.sarRelatedEJBs.jar的下一个依赖,

    <jboss-deployment-structure>
       ...
       <sub-deployment name="RelatedEJBs.jar">
         ...
       </sub-deployment>
       <sub-deployment name="MBeans.sar">
         <dependencies>
           <!-- Adds a dependency on the ejb jar. This could also be done with a Class-Path entry -->
           <module name="deployment.YouApp.ear.RelatedEJBs.jar" />
         </dependencies>
       </sub-deployment>
    </jboss-deployment-structure>
    

    编辑:一个有用的migration guide to Wildfly

    【讨论】:

    • 非常感谢您的回复.. Guillermo。我担心的是 MBean 分散在不同的 JAR 和 EJB maven 子工件中,目前,我在 EAR 的 META-INF 中有包含 MBean 定义的 jboss-service.xml。我不知道我是否可以创建一个包含 jboss-service.xml 的单个 SAR 文件,该文件与不同 JAR 中的不同 MBean 相关。我也在 E​​AR pom.xml 中尝试了 true 但它的部署顺序不起作用。如果您对此有任何建议,请分享一下。
    • 我将添加一个指向有用的广泛迁移指南的链接。请参阅“更新使用服务式部署的应用程序”部分来回答您的疑问
    • 今天,我尝试创建一个单独的子模块 (sar),其中仅包含 jboss-servcie.xml 并添加到 EAR 中,因为该模块可以访问其他 JAR,包括 EJB jar。我根据您的建议添加了 jboss-deployment-structure.xml,但它没有按顺序部署。我在 EAR 的 META-INF 下添加了这个描述符文件。此文件是否仅适用于单个部署 EAR 中的子模块部署?如果您有任何cmets,请分享。非常感谢..再次。
    • 我不知道与...相关的任何错误... 编辑问题,包括描述符文件和您制作的新结构/模块。
    • 非常感谢您的帮助.. Guillermo。我可以通过添加一个单例启动本地 bean 来实现这一点,该 bean 负责以编程方式注册 MBean。
    猜你喜欢
    • 2015-05-29
    • 2015-12-12
    • 2018-06-20
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2015-11-24
    • 2015-02-17
    • 1970-01-01
    相关资源
    最近更新 更多