【发布时间】:2011-03-20 18:37:48
【问题描述】:
我想在主机 A 中有一个 bean Foo 注入,通过 @EJB 注释到主机 Bar 中的 bean B。
这两个主机都是Glassfish-v3 的独立实例。
在阅读 Glassfish 文档时,我发现了很多信息,其中一些听起来有点矛盾。
我知道每个 bean 都有一个名为的全局 jndi 分配给它,并了解它是如何构造的,What is the syntax for portable global JNDI names?。我也明白Bar中Foo的声明应该是这样的(假设FooRemote是Foo的远程业务接口,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都可以出于不同目的进行通信。
我有一种强烈的感觉,我在这里遗漏了一些基本的东西,我真的很感激能指出我所遗漏的东西。
顺便说一句,我想尽可能避免使用描述符文件等,并将大部分信息保留在注释上,并且只在服务器中配置主机 ip。
编辑:
我认为这个问题的另一个有趣的方面是如何在这方面使用负载平衡,即假设我有相同的A1 和A2 服务器,负载平衡将如何从路由请求发生B 到 A1 或 A2
编辑2:
我认为这可能与 ejb 3.1 无关,但与如何使两个应用程序服务器能够看到彼此的 jndi 注册表的基础有关。我认为这与 ejb 3.1 无关,因为在 3.0 中似乎存在类似的问题,Global 不可移植 jndi。
我想每个应用服务器中的一些配置将允许我配置它应该查询哪些其他“邻居”以获取 jndi 远程 bean。
希望能给外面的人一个线索。
谢谢,
伊泰
【问题讨论】:
标签: java glassfish ejb application-server