我是Java EE的新手,我试图理解本地接口和远程接口的概念。有人告诉我Java
EE的一大优点是易于扩展(我相信这意味着您可以在不同的服务器上部署不同的组件)。那是远程和本地接口进入的地方吗?如果您希望应用程序在不同的服务器上具有不同的组件,则应该使用远程接口吗?如果您的应用程序仅驻留在一台服务器上,并使用本地接口?
如果我的上述假设正确,那么您将如何选择对于新应用程序使用本地接口还是远程接口,而又不确定流量的大小呢?首先使用本地接口,然后在适用的情况下逐步升级到远程接口?
感谢您的澄清和建议。
我是Java EE的新手,我试图理解本地接口和远程接口的概念。
在EJB规范的初始版本中,“假定”
EJB是远程组件,并且调用它们的唯一方法是使用RMI语义及其所隐含的所有开销(对于每个网络调用和对象序列化)进行远程调用。方法调用)。即使将EJB客户端与EJB容器并置在同一虚拟机中,EJB客户端也必须为此付出性能损失。
后来,Sun意识到大多数业务应用程序实际上并不是在不同的层上分发EJB,他们通过引入本地接口的概念来固定规范(在EJB
2.0中),以便与EJB容器并置在同一虚拟机中的客户端可以使用EJB调用EJB。直接方法调用,完全绕过RMI语义(以及相关的开销)。
有人告诉我Java EE的一大优势是易于扩展(我相信这意味着您可以在不同的服务器上部署不同的组件)
Java EE可以扩展,但这不一定意味着要 分发 组件。您可以在群集上运行Web + EJB应用程序,而无需分离Web层和EJB层。
如果您希望应用程序在不同的服务器上具有不同的组件,则应该使用远程接口吗?如果您的应用程序仅驻留在一台服务器上,并使用本地接口?
我会这样说:如果客户端不在同一个JVM中,则使用远程接口(这并不意味着仅使用一个服务器/ JVM)。
(…)首先使用本地接口,然后逐步升级到远程接口(如果适用)?
我可能将从使用本地接口开始。就像已经暗示的那样,切换到远程接口并不总是强制性的(您可以将 并置的 结构集群化)。
我建议检查下面提到的资源(前两个资源很旧,但仍然有用,另外两个资源是较新的)。
问题内容: 我试图了解EJB的目的以及为什么需要不同的客户端视图。有人可以解释吗? 问题答案: 远程客户端视图 当您的EJB及其客户端位于分布式环境中时-意味着EJB和客户端将驻留在单独的Java虚拟机上。示例:托管在WebSphere Application Server上的EJB和使用Tomcat服务器上托管的EJB API的Servlet。 本地客户视图 仅在保证其他企业Bean或客户机仅在
我需要帮助从Spring调用EJB远程接口。 web应用程序部署在同一个JBoss服务器中。但是当我尝试部署时,我得到一个命名异常'ServiceBean'未绑定。我必须在web.xml中添加环境条目才能访问EJB吗(即使EJB和web应用程序都部署在同一个JBoss中)?
我不能从另一个ejb模块注入远程ejb。我把应用程序分成一个库和两个ejb模块。我尝试通过远程接口从一个ejb模块访问另一个模块,并获得javax.naming.NameNotFoundExc0019。我尝试从NewBean"@EJB私有CountryFacadeRemote"访问。我用了玻璃鱼。 我必须配置一些东西?谢谢。 下载源代码 MyAppTestEJB域名库: *国家: *Country
我有一个应用程序,它有一个EJB,它注入了由CDI生成的实体管理器。同一服务器(wildfly 9)/JVM上的另一个应用程序将使用此EJB从实体管理器获取结果。 EJB的第一次调用将返回预期结果。当调用返回时,它生成实体管理器,获取数据并再次处理实体管理器。由于关闭了实体管理器,该EJB的每个后续调用都将抛出一个错误。未对新实体经理进行生产/处置。 这是预期的巴哈维奥吗?我的代码中有错误吗? 这
我创建了一个远程接口,并将其部署在应用服务器上的本地计算机上,它工作得很好,但是在部署成功的远程服务器上测试它时,我无法在验证登录表单时访问远程方法,导致以下错误: javax.ejb.ejbException 在com.sun.ejb.containers.baseContainer.PostInvoke(BaseContainer.java:2045) 在com.sun.ejb.contain
我知道很多人已经询问了这个错误,但我仍然找不到解决方案,我按照本教程创建了一个远程客户端,访问驻留在Wildfly 10服务器上的Bean,该服务器运行在地址:localhost:8082。这是我的代码: 我的界面: 我的Bean: 我的远程客户端: 然后我还在项目的src/文件夹中添加了一个jboss-ejb-client.properties文件,如下所示: 我的操作与教程完全相同,但仍然会出