我想要一颗 bean Foo
在主机A
这是由 @EJB
注入(inject)的bean 的注解 Bar
在主机B
.
这两个主机都是 Glassfish-v3
的单独独立实例.
在阅读 Glassfish
时docs 我找到了很多信息,其中一些听起来有点矛盾。
我知道每个 bean 都有一个分配给它的全局 jndi,并了解它是如何构建的,What is the syntax for portable global JNDI names? .我也明白 Foo
的声明在 Bar
应该是这样的(假设FooRemote
是Foo
的远程业务接口(interface),fooejb
是它的模块):@EJB(lookup=java:global/fooejb/FooRemote) FooRemote foo
, 这是基于 this .
看不懂的是哪里跟楼主说的A
和主机B
了解彼此。
我看到了很多关于应用程序客户端和应用程序服务器的示例,但我无法找到此类场景的示例。
在 this question一个sun-web.xml
和 Global-JNDI
提到了,但我认为它不是 EJB3.1(因为它不是 Portable JNDI
)而且我不明白这个 sun-web.xml
在哪里应该驻留(如果可以的话,我想避免它)。
主要有两点不同:
- 没有 -Dorg.omg.CORBA.ORBInitialHost= 参数选项(据我所知)
- 任何解决方案当然应该允许包含第三个主机
C
这两个A
和B
出于不同的目的进行交流。
我有一种强烈的感觉,我在这里遗漏了一些基本的东西,我真的很感激能指出我所遗漏的东西。
顺便说一句,我想尽可能避免使用描述 rune 件等,并在注释中留下大部分信息,并且只在服务器中配置主机 ip。
编辑:
我认为这个问题的另一个有趣的方面是如何在这方面使用负载平衡,即假设我有 A1
和 A2
相同的服务器,关于路由来自 B
的请求,负载平衡将如何发生?到 A1
或 A2
编辑2:
我认为这可能与 ejb 3.1 无关,但与如何使两个应用程序服务器能够查看彼此的 jndi 注册表的基础有关。我认为这与 ejb 3.1 无关,因为 3.0 中似乎存在类似的问题 Global
不可移植的jndi。
我想每个应用程序服务器中的一些配置将允许我配置它应该查询 jndi 远程 bean 的其他“邻居”。
希望能给外面的人一个线索。
谢谢,
一泰
最佳答案
关于 EJB 负载平衡,您可能想看看这个博客:
http://www.techpost.info/2010/12/ejb-load-balancer_7304.html
关于java - EJB,两个应用程序服务器之间的远程处理(glassfish),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5370559/