Java EJB-主/远程和本地主/本地接口
修改一些过去的考试试卷,主要关注面向组件的设计和J2EE,我遇到了以下问题: 对场景3“Exchange请求”的初步调查表明,两个EJB将提供合适的解决方案:一个名为EnterExchangeRequest的会话bean来控制处理,另一个名为ExchangeRequest的实体bean来表示请求的持久属性。讨论以下接口的作用:Java EJB-主/远程和本地主/本地接口,java,jakarta-ee,interface,ejb,Java,Jakarta Ee,Interface,Ejb,修改一些过去的考试试卷,主要关注面向组件的设计和J2EE,我遇到了以下问题: 对场景3“Exchange请求”的初步调查表明,两个EJB将提供合适的解决方案:一个名为EnterExchangeRequest的会话bean来控制处理,另一个名为ExchangeRequest的实体bean来表示请求的持久属性。讨论以下接口的作用: 家 遥远的 本地家庭 本地的 以及它们将如何提供对上述EJB服务的访问 我可以试着解释一下Home和Remote接口如何适合这幅图。我还听到讲师说可以用LocalHo
- 家
- 遥远的
- 本地家庭
- 本地的
Home
和Remote
接口如何适合这幅图。我还听到讲师说可以用LocalHome
取代Home
,用Local
取代Remote
(为什么?),但他们为什么要我同时讨论这四个角色
我说的对吗,EJB容器(应用服务器)会看到一个接口是
Home
或Remote
,然后决定bean可以“生存”在集群中的任何机器上,在接口是LocalHome
和Local
的情况下,容器会知道bean不能分布在多台机器上,因此只能在一台机器上保持它们的“活动”
我完全迷失在这个Java丛林中。我正经历着一场BeanOverflow。你能告诉我哪些假设是错误的,指出我的误解和错误吗 感谢所有愿意帮助我使用这些EJB接口的人
注意,我不是要你回答过去试卷上的问题。当你问这个问题时,如果你想知道他们在想什么,只是好奇而已。Home负责创建Remote(有点像它的构造函数),LocalHome和Local具有相同的关系 在每种情况下,容器都会为您提供一个代理,该代理引用您编写的真实EJB类 如果让我猜的话,问题是会话bean使用remote,实体bean使用local 无论如何,尽管这些概念仍然存在,但在EJB3中,事情已经得到了更好的简化 编辑:为了响应注释,使用EJB3,bean类本身可以直接实现远程接口和主接口(对于会话bean)。它们由带有单个注释的EJB组成。有状态bean还有几个注释来处理状态问题。实体bean没有主接口,也不需要本地接口,您可以直接与java对象交互。有一个EntityManager根据查询检索正确的实体bean,该EntityManager通过注释注入
这是一段话的总结。web上有很多关于这方面的教程,但是EJB通常会解决一类很难理解的问题,除非您处理这个问题。它们不是解决这个问题的唯一方法,但除非你处理这种类型的编程,否则仅仅阅读它并不能真正帮助你理解它。正如Yishay所指出的,Home/Remote和LocalHome/Local是捆绑在一起的,Home接口作为构造函数发挥作用 本地bean绑定到它们所在的JVM,您无法从外部访问它们。可以从其他JVM访问远程bean
我使用类似的方法:我总是部署耳朵。耳朵用的豆子我制作本地豆子,我制作的豆子是供其他耳朵使用的远程豆子。但是,只要本地bean部署在同一JVM中,就可以在其他环境中使用本地bean?加入这个俱乐部。我感觉你们,我有BeanOverflow:)你们能不能也提供一个在EJB3中事情是如何简化的草图?Re:EDIT,bean类不能实现home接口。我对简化的解释是:在EJB3中,JPA有效地替换了实体bean,但如果您确实使用实体bean,则必须仍然使用主接口。无状态会话bean不需要主接口,如果未定义主接口,则可以直接从JNDI中查找业务接口并进行缓存。有状态会话bean也不需要主接口,但是如果没有使用主接口,那么JNDI查找必须用作“工厂”,“只有打包在与提供本地客户端视图的企业bean相同的应用程序中的本地客户端才需要支持通过本地客户端视图访问企业bean。此规范的兼容实现可以选择性地支持从打包在不同应用程序中的本地客户端访问企业bean的本地客户端视图。[…]依赖于对本地客户端视图的应用程序间访问的应用程序是不可移植的。”