我们使用面向服务的体系结构方法,其中我们有一些其他服务使用的核心服务 . 在启动时,我们的服务通常从核心服务加载数据缓存,以便在请求进入或计划任务运行时可用 .
I'm using Wildfly 8.2.0 and have Project A which depends on Project B (both are .war's). Project A needs to wait for Project B to be loaded in order to start up.
这是项目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>
在旁注中,使用了 module-alias
,因为项目B是一个名为"projectB-2.0.0.war"的战争,但是当我指定依赖项时,我不想关心版本号 .
这是项目A中的jboss-deployment-structure.xml:
<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="deployment.projectB" />
</dependencies>
</deployment>
</jboss-deployment-structure>
What I would like: if A and B are on the same Wildfly server, A needs to wait for B to start. If A and B are on separate servers, they should start immediately.
可选的依赖项会实现吗?喜欢:
<dependencies>
<module name="deployment.projectB" optional="true" />
</dependencies>
Update
我只是在同一台服务器上用A和B设置 optional="true"
,在这个测试中,A和B同时启动(在日志中,我看到EJB JNDI绑定以非常随机的顺序列出:B, A,B,B,B,B,B,A,A) . 通过"JNDI bindings",我的意思是日志说"JNDI bindings for session bean... are as follows" .
所以也许我不得不扔掉 optional="true"
计划 .
Update #2
由于项目A依赖于项目B,项目B正在被项目A的类加载器加载,在这种情况下这不是一件好事(马上就看到我正在使用错误的log4j.xml文件) .
Update #3
使用jboss-deployment-structure.xml影响加载顺序可能还不够 . 看起来jboss-deployment-structure.xml可以影响类从war / ear中加载的顺序,但是在开始加载下一个部署之前不会等到它们的EJB启动 .
还有其他想法吗?
谢谢!