EJB – Home / Remote和LocalHome / Local接口

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

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

  • 远程
  • LocalHome
  • 本地

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

我可以尝试解释HomeRemote接口如何适应图片。 我也听说讲师说可以用LocalHome取代Home ,而用Local取代Remote (为什么?),但为什么他们要我同时讨论这四种角色呢?


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


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

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

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

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

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

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

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

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

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

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

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

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