EJB - Home / Remote和LocalHome / Local接口

时间:2009-05-26 23:22:35

标签: java java-ee interface ejb

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

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

  • 主页
  • 远程
  • LocalHome
  • 本地

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

我可以尝试解释HomeRemote接口如何适合图片。我还听说讲师说可以用Home替换LocalHomeRemoteLocal(为什么?),但为什么他们要我讨论所有四个同时?


当我说, EJB容器(应用程序服务器)会看到接口是HomeRemote然后决定该bean时,我是否正确可以在群集中的任何计算机上“生存”,而在接口为LocalHomeLocal的情况下,容器将知道bean不能分布在多台计算机上,因此会保留它们“只在一台机器上活着?


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

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

P.S。请注意,我不是要求您回答过去的试卷中的问题。只是好奇你是否有任何想法,问他们在问这个问题后会发生什么。

2 个答案:

答案 0 :(得分:7)

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

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

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

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

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

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

答案 1 :(得分:7)

正如Yishay所指出的,Home / Remote和LocalHome / Local捆绑在一起,Home接口作为构造函数。

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

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