【发布时间】:2014-12-11 09:07:59
【问题描述】:
当 EJB 依赖于位于另一个集群中的另一个应用程序但仍未启动时,我应该如何初始化它?
我该怎么做?
- @PostConstruct:也许我可以循环直到依赖的 EJB 可用,但我担心它会超时或阻塞服务器加载过程。
- @Schedule:可能会安排初始化过程以避免服务器阻塞,然后仅在初始化完成后才服务请求,否则会抛出错误。
您认为我应该如何进行?你能推荐我一些 Pattern 吗?
【问题讨论】:
-
在第二台服务器上的一个应用程序中制作 PostConstruct。当第二台服务器启动时,调用 RMI(远程 EJB)并从该 EJB 初始化
-
@ashokhein 那可能是!但是,应用程序 2 不必知道应用程序 1。这会产生我想避免的耦合和循环依赖。还是谢谢你。
-
怎么可能是循环依赖。因为这是单向方向。应用 2 ---> 应用 1
-
@ashokhein 我认为它是:application2 --> application 1 (init) --> application 2。但是,application2 实际上是一个“网关”,因此它执行隧道请求。 app2 的要求是不应该依赖于它的客户端。
-
我假设您的第一个 (A) 应用程序在第二个 (B) 完全启动之前无法使用。然后我会说在 B 准备好之前启动 A 是没有意义的,所以我会默认将其保持为停止状态。为了避免强耦合,我可能会创建第三个应用程序 - 一个启动器 (S),它会监视 B 是否准备好,如果准备好,那么它将启动 A。
标签: java jakarta-ee design-patterns architecture ejb-3.1