Jakarta ee Wildfly/JBoss部署启动顺序

Jakarta ee Wildfly/JBoss部署启动顺序,jakarta-ee,jboss,wildfly,wildfly-8,Jakarta Ee,Jboss,Wildfly,Wildfly 8,我们使用面向服务的体系结构方法,其中我们有一些核心服务供其他服务使用。在启动时,我们的服务通常会从核心服务中加载一个数据缓存,以便在请求传入或计划任务运行时可用 我使用的是Wildfly 8.2.0,项目A依赖于项目B(两者都是.war)。项目A需要等待项目B加载才能启动。 以下是项目B中的jboss-deployment-structure.xml: <?xml version='1.0' encoding='UTF-8'?> <jboss-deployment-struct

我们使用面向服务的体系结构方法,其中我们有一些核心服务供其他服务使用。在启动时,我们的服务通常会从核心服务中加载一个数据缓存,以便在请求传入或计划任务运行时可用

我使用的是Wildfly 8.2.0,项目A依赖于项目B(两者都是.war)。项目A需要等待项目B加载才能启动。

以下是项目B中的jboss-deployment-structure.xml:

<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
   <deployment>
      <module-alias name="deployment.projectB"/>
   </deployment>
</jboss-deployment-structure> 
我想要的:如果A和B在同一台Wildfly服务器上,A需要等待B启动。如果A和B在不同的服务器上,它们应该立即启动。

可选依赖项可以实现这一点吗?比如:

  <dependencies>
     <module name="deployment.projectB" optional="true" />
  </dependencies>

更新

我只是在同一台服务器上设置了A和B的
optional=“true”
,在这个测试中,A和B同时启动(在日志中,我看到ejbjndi绑定以非常随机的顺序列出:B,A,B,B,B,B,B,B,A,A)。我所说的“JNDI绑定”,是指日志中说的“会话bean的JNDI绑定……如下所示”

因此,我可能不得不放弃
optional=“true”
计划

更新#2

由于项目A依赖于项目B,因此项目B由项目A的类加载器加载,这在本例中不是一件好事(一开始我就发现使用了错误的log4j.xml文件)

更新#3

使用jboss-deployment-structure.xml来影响加载顺序可能还不够。看起来jboss-deployment-structure.xml可以影响类从war/ear加载的顺序,但不会等到它们的EJB启动后才开始加载下一个部署

还有其他想法吗


谢谢

刺耳的回答是这就是.ear文件的用途。但实际上,你说的一个依赖另一个是什么意思?它们是如何绑定在一起的?哈哈。项目A在项目B中使用EJB,来自启动时运行的代码。因此,如果项目B没有启动并运行,A就会出错。我们可以建立一个重试机制,但不希望这样,因为我们有很多这样的项目。您是否考虑过尝试使用web.xml中的resource ref来引用ejb的jndi?如果这样做有效,它可能比模块依赖性更灵活。我从来没有尝试过这个,所以我不能肯定它是否有效。@TerrenceCurran我会检查一下,谢谢你的提示。如果你有任何其他想法,我也想听听。你应该使用jboss-all.xml文件,但不幸的是,
可选
不受支持。仅供参考:
  <dependencies>
     <module name="deployment.projectB" optional="true" />
  </dependencies>