为考试修改一些过去的考试试卷主要关注面向组件的设计和J2EE,我遇到了以下问题:
对方案3的初步调查:“Exchange请求”表明两个EJB将提供合适的解决方案:一个名为EnterExchangeRequest的会话bean来控制处理,一个名为ExchangeRequest的实体bean来表示请求的持久属性。讨论以下接口的作用:
以及它们如何提供对上述EJB服务的访问。
我可以尝试解释Home
和Remote
接口如何适合图片。我还听说讲师说可以用Home
替换LocalHome
,Remote
换Local
(为什么?),但为什么他们要我讨论所有四个同时?
当我说, EJB容器(应用程序服务器)会看到接口是Home
或Remote
然后决定该bean时,我是否正确可以在群集中的任何计算机上“生存”,而在接口为LocalHome
和Local
的情况下,容器将知道bean不能分布在多台计算机上,因此会保留它们“只在一台机器上活着?
我完全迷失在这个企业Java丛林中。我正在体验BeanOverflow。你能否告诉我哪些假设是错的,指出我的误解和失误。
感谢所有愿意帮助我使用这些EJB接口的人。
P.S。请注意,我不是要求您回答过去的试卷中的问题。只是好奇你是否有任何想法,问他们在问这个问题后会发生什么。
答案 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中