EJB - Home/Remote和LocalHome/Local接口

Pet*_*háč 15 java ejb interface java-ee

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

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

  • 远程
  • LocalHome
  • 本地

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

我可以尝试解释如何HomeRemote接口适合图片.我也听到讲师说,人能够取代HomeLocalHome,并且Remote通过Local(为什么?),但他们为什么要问我在同一时间来讨论四个方面的作用?


难道我得到它的权利,当我说,在EJB容器(应用服务器),会看到一个接口HomeRemote再决定该Bean在集群中的任何机器上能"活",而在案件的接口LocalHomeLocal对容器会知道bean不能分布在多台机器上,因此只能让它们在一台机器上"活着"吗?


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

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

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

Yis*_*hai 7

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

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

如果我不得不猜测,问题所在的是使用远程会话bean和本地实体bean.

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

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

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


Sal*_*dur 7

正如Yishay所指出的,Home/Remote和LocalHome/Local连接在一起,Home接口用作构造函数.

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

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

  • 根据EJB规范,"只需要在与提供本地客户端视图的企业bean相同的应用程序中打包的本地客户端支持通过本地客户端视图访问企业bean.此规范的兼容实现可以选择支持访问来自打包在不同应用程序中的本地客户端的企业bean的本地客户端视图.[...]依赖于对本地客户端视图的应用程序间访问的应用程序是不可移植的. (2认同)