如何控制 Wildfly 8.2.0 AS 中的部署顺序(首先是 EJB,然后是 MBean 部署)
How to control order of deployment (EJB first and then MBeans deployment) in Wildfly 8.2.0 AS
我正在将包含 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>
我也在 EJB 中尝试了 @startup
,但我无法控制顺序,即 1. EJB 部署 2. MBean 部署。
任何人都可以帮助了解如何控制 Wildfly 8.2.0
中的部署顺序。我需要先部署 EJB,然后再部署 MBean。非常感谢。
只是评论
关于您希望从 MBean 中获取的 EJB,您可能误解了 jboss-deployment-structure.xml. It express an initialization dependency between singleton components (even if the related EJB are singleton be aware about possible problems with DependsOn like WLFY-4251) 的规范。
解决方法
由于您使用的是 Jboss/Wildfly 服务器,您可以选择使用 jboss-deployment-structure.xml 来指定模块之间的依赖关系。
也许,因为您将所有组件都打包在同一个 EAR 应用程序中,所以您可以将组件分成模块,假设一个 MBean.sar 模块包含 MBean 和其他 RelatedEJBs.jar 模块以及您的 MBean 引用的 EJB。
然后定义 MBeans.sar over 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。
我正在将包含 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>
我也在 EJB 中尝试了 @startup
,但我无法控制顺序,即 1. EJB 部署 2. MBean 部署。
任何人都可以帮助了解如何控制 Wildfly 8.2.0
中的部署顺序。我需要先部署 EJB,然后再部署 MBean。非常感谢。
只是评论
关于您希望从 MBean 中获取的 EJB,您可能误解了 jboss-deployment-structure.xml. It express an initialization dependency between singleton components (even if the related EJB are singleton be aware about possible problems with DependsOn like WLFY-4251) 的规范。
解决方法
由于您使用的是 Jboss/Wildfly 服务器,您可以选择使用 jboss-deployment-structure.xml 来指定模块之间的依赖关系。 也许,因为您将所有组件都打包在同一个 EAR 应用程序中,所以您可以将组件分成模块,假设一个 MBean.sar 模块包含 MBean 和其他 RelatedEJBs.jar 模块以及您的 MBean 引用的 EJB。
然后定义 MBeans.sar over 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。