如何在Wildfly 8.2.0 AS中控制部署顺序(首先是EJB,然后是MBeans部署)

时间:2015-07-03 11:44:58

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

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

JBoss 6 AS中,MBean中使用的@DependsOn注释维护了部署的顺序,即部署了Dependent 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>

我还在EJB中尝试了@startup但我无法控制序列,即1. EJB部署2. MBeans部署。

有人可以帮助您了解如何在Wildfly 8.2.0中控制部署顺序。我需要先部署EJB然后再部署MBeans。非常感谢。

1 个答案:

答案 0 :(得分:2)

只是评论

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

解决方法

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

然后,您将 MBeans.sar 的下一个依赖项定义为 RelatedEJBs.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