当一个耳朵包含两个ejb模块modulea.jar和moduleb.jar时。并且modulea.jar包含一个@Startup ejbX,它在bean启动期间从moduleb.jar调用另一个ejbY,它不是@Startup ejb,需要先启动moduleb.jar,否则应用服务器是不能将X注入Y.但是如何确保首先启动moduleb.jar?
目前我在WebSphere中遇到此问题,但我似乎找不到强制执行订单的方法。规范中有什么东西可以管理订单吗?
或者可能是WebSphere特定的(而不是供应商锁定)。也许在不同的模块中使用启动ejb和ejb是一个糟糕的设计,对此的一些见解也是受欢迎的。
答案 0 :(得分:3)
可以通过模块配置中的Starting weight
配置它(Enterprise Applications > YourApplication > Manage Modules > ejbmoduleb.jar
)
起始重量
指定服务器启动模块的顺序 开始。首先启动起始重量最低的模块。
如果您需要整个应用程序之间的顺序相关性,请在Startup order
应用程序配置(Startup behavior
)中设置Enterprise Applications > YourApplication > Startup behavior
启动订单
指定服务器启动应用程序的顺序 开始。启动顺序就像一个起始重量。应用程序 首先启动最低起始重量。
如果您计划拥有application.xml
部署描述符,请将以下条目添加到描述符中,并按正确的顺序提供模块。
<initialize-in-order>true</initialize-in-order>
另见: