15

修改一些过去的考试试卷主要集中在面向组件的设计和J2EE上,我遇到了以下问题:

对场景 3:“交换请求”的初步调查表明,两个 EJB 将提供一个合适的解决方案:一个名为 EnterExchangeRequest 的会话 bean 来控制处理,一个名为 ExchangeRequest 的实体 bean 来表示请求的持久属性。讨论以下接口的作用:

  • 偏僻的
  • 本地首页
  • 当地的

以及他们将如何提供对上述 EJB 服务的访问。

我可以尝试解释如何将接口融入图片中HomeRemote我也听讲师说一个可以替换HomeLocalHome, 和RemoteLocal为什么?),但他们为什么要我同时讨论所有四个的角色?


我说得对吗,EJB 容器(应用程序服务器)会看到一个接口是HomeorRemote然后决定 bean 可以在集群中的任何机器上“存在”,而在这种情况下,接口是LocalHome并且Local容器会知道 bean 不能分布在多台机器上,因此只能在一台机器上保持它们“活着”?


我完全迷失在这个企业 Java 丛林中。我正在经历 BeanOverflow。您能否告诉我我的哪些假设是错误的,指出我的误解和错误。

感谢所有愿意帮助我处理这些 EJB 接口的人。

PS 请注意,我并不是要您回答过去试卷中的问题。只是好奇你在问这个问题时是否对他们有什么想法。

4

2 回答 2

7

Home 负责创建 Remote(有点像它的构造函数),并且 LocalHome 和 Local 具有相同的关系。

在每种情况下,容器都会为您提供一个代理,该代理引用您编写的真实 EJB 类。

如果我不得不猜测,那么问题是对会话 bean 使用远程,对实体 bean 使用本地。

无论如何,尽管这些概念仍然存在,但在 EJB3 中事情已经得到了更好的简化。

编辑:作为对评论的回应,使用 EJB3,bean 类本身可以直接实现远程和家庭接口(对于会话 bean)。它们是用单个注释制作的 EJB。有状态的 bean 有更多的注释来处理状态问题。实体bean没有Home接口,也不需要本地接口,可以直接与java对象交互。有一个 EntityManager 可以根据查询检索正确的实体 bean,并且该 EntityManager 是通过注释注入的。

这种总结在一个段落中。网上有很多关于这些东西的教程,但是 EJB 通常会解决一类问题,除非您处理这些问题,否则很难理解。它们不是解决它的唯一方法,但除非你处理这种类型的编程,否则仅仅阅读它并不能真正帮助你理解它。

于 2009-05-26T23:37:43.263 回答
7

正如 Yishay 所指出的,Home/Remote 和 LocalHome/Local 是绑定在一起的,并且 Home 接口用作构造函数。

本地 bean 与它们所在的 JVM 相关联,您无法从外部访问它们。可以从其他 JVM 访问远程 bean。

我使用类似的方法:我总是张开耳朵。用于耳朵的豆子我制作本地豆子,用于其他耳朵的豆子我制作的远程豆子。但是可以在其他耳朵中使用本地bean,只要它们部署在同一个JVM中

于 2009-05-28T12:54:45.387 回答