请问高手:EJB中的远程接口、本地接口、HOME接口的联系与区别是什么?应用时应注意哪些问题?

puremoonstone 2002-04-17 04:10:13
请问高手:EJB中的远程接口、本地接口、HOME接口的联系与区别是什么?应用时应注意哪些问题?
...全文
763 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
puremoonstone 2002-04-22
  • 打赏
  • 举报
回复
从JBUIDER6中翻译的关于接口的资料:
一个EJB至少为会话BEAN或实体BEAN提供两种接口。对于EJB 1.x,你至少要创建一个home interface和remote interface;对于EJB 2.0可以有一个Remote home,Remote interface,还可以有一个Local home,Local interface。Remote home,Remote interface为客户端提供了BEAN的远程视图,而Local home,Local interface为客户端提供了BEAN的本地视图。remote and/or local home interface定义了客户端程序用来创建、定位、销毁BEAN实例的方法;remote/local interface实现了BEAN的商业方法客户端是通过remote/local interface来访问这些方法的。
BEAN的home interface,无论是remote还是local,控制了BEAN的生命周期。它包含了创建、查找、删除一个BEAN实例的方法。作为BEAN的提供商,你必须定义home 接口,但可以不实现它。EJB容器会产生一个home对象,并返回一个引用给BEAN。
一个EJB的客户端可以有BEAN的远程视图或本地视图,remote bean有一个home interface,它扩展了EJBHome interface;local bean有一个home interface,它扩展了EJBLocalHome interface。每个remote /local interface都扩展了javax.ejb.EJBHome interface。

一个实体BEAN是被设计用来为多个客户端服务的,一个客户端创建了实体BEAN,其他客户端也应该可以使用它。
remote or local interface描述了客户端程序可以调用的商业方法。当在remote or local interface中定义了这些方法后,你要在BEAN class中实现它,客户端不会直接访问BEAN,他们是通过remote or local interface来访问这些方法的。
remote or local interface中定义的方法必须遵守以下原则:
它必须是public的;
如果是定义在remote interface中的方法,它必须抛出java.rmi.RemoteException;如果不是,它不能抛出java.rmi.RemoteException。
所有客户端能访问的方法必须在remote or local interface中定义。


BEAN的interface的几种选择:
选择Remote意味着EJB Designer生成一个Bean class,Remote home和Remote interface。
选择Local意味着EJB Designer生成一个Bean class,Local home和Local interface。
如果选择Remote/Local,EJB Designer将生成Bean class,Remote home,Remote interface,Local home和Local interface。在JBUILDER中,会话BEAN默认是remote的,实体BEAN默认是local的。
如果你为一个会话BEAN (Component)选择了Remote/Local,将生成的文件如下:
ComponentHome - the remote home interface;
ComponentBean - the bean class;
Component - the remote interface ;
ComponentLocalHome - the local home interface ;
ComponentLocal - the local interface。

如果你为一个实体BEAN (Component)选择了Remote/Local,将生成的文件如下:
ComponentHome - the local home interface ;
ComponentBean - the bean class ;
Component - the local interface ;
ComponentRemoteHome - the remote home interface ;
ComponentRemote - the remote interface。
gunwilove 2002-04-22
  • 打赏
  • 举报
回复
发送者 pengji 发送时间 2002-4-22 9:06:02 删除 回复
内容 只是命名上的区别啦!
我用JBUILDER生成一个BEAN时,选择interfaces为local时,生成的java文件有:Account.java,AccountBean.java,AccountHome.java
Account.java为localremoteinterface
AccountHome.java为localhomeinterface
等等
----------------------------------------------------------------
原贴内容:
您好,我想问一下EJB接口的问题:
譬如,我用JBUILDER生成一个BEAN时,选择interfaces为local时,生成的java文件有:Account.java,AccountBean.java,AccountHome.java;当选为remote时,生成的文件有:AccountBean.java,AccountRemote.java,AccountRemoteHome.java;当选为local/remote时,生成的文件有:Account.java,AccountBean.java,AccountHome.java,AccountRemote.java,AccountRemoteHome.java。能不能解释一下他们的区别?谢谢!
此外,我在《精通EJB》上看到有AccountLocal.java,AccountLocalHome.java,为什么在JBUILDER中没有呢?
网络咖啡 2002-04-20
  • 打赏
  • 举报
回复
《Master EJB and J2EE》讲 的很好的,看看吧
uu_snow 2002-04-20
  • 打赏
  • 举报
回复
JB6当然有呀
比如你创建一个新的EJB2。0的SESSIONBEAN,
New -> EJB 2.0 Designer -> New -> OK -> OK -> New Sessino Bean
在Interface一项中,你就可以给这个BEAN指定接口类型了

至于什么选什么样的接口类型,刚才我已经说了
比如,你写了一个statefulbean,部署到了你的WL中,然后又写了一个
SERVLET去调用这个BEAN,而且这个SERVLET和BEAN在同一个WL中,你就
可以把这个BEAN做成LOCAL的
如果你想在另外一台机器上调用到这个BEAN,你就必须把它申明成REMOTE
worldheart 2002-04-20
  • 打赏
  • 举报
回复
Remote and local access
An EJB 2.0 component can be accessed remotely or locally. Clients that access a remote bean use the bean's remote and remote home interfaces. A remote home is often referred to as the home interface. A client with remote access to a bean can run on a different machine and use a different Java Virtual Machine (JVM) than the bean itself. In method calls to a remote bean, parameters are passed by value, which helps maintain loose coupling between the client and the bean.

A client with local access to a bean must run in the same JVM as the bean it accesses. A local client won't be an external client application, but rather another enterprise bean or web component. In method calls to a local bean, parameters are passed by reference, resulting in a tighter coupling between the calling bean or web component and the called bean.


Like the remote interface, the local interface provides access to the bean's business methods, while its local home interface provides access to the methods that control the life cycle of the bean as well as its finder methods. Often entity beans that have a container-managed relationship with other entity beans have local access to them.

Because beans with local interfaces must run in the same JVM, there is no need for remote calls. Therefore, the overhead of serializing and transporting objects is reduced. Usually this means greater performance.



很高兴,能和你一同切磋问题!如果我的回答有错误,希望批评指正!
因为我们需要真理,因为我们是做技术的!谢谢!
个人联系方式: worldheart@263.net



worldheart 2002-04-20
  • 打赏
  • 举报
回复
我给你推荐一本书:《EJB》,中国电力出版社!介绍的很详细!


很高兴,能和你一同切磋问题!如果我的回答有错误,希望批评指正!
因为我们需要真理,因为我们是做技术的!谢谢!
个人联系方式: worldheart@263.net
日后也希望成为好朋友!


puremoonstone 2002-04-20
  • 打赏
  • 举报
回复
我用的是JB6.
gunwilove 2002-04-20
  • 打赏
  • 举报
回复
譬如,我用JBUILDER生成一个BEAN时,选择interfaces为local时,生成的java文件有:Account.java,AccountBean.java,AccountHome.java;当选为remote时,生成的文件有:AccountBean.java,AccountRemote.java,AccountRemoteHome.java;当选为local/remote时,生成的文件有:Account.java,AccountBean.java,AccountHome.java,AccountRemote.java,AccountRemoteHome.java。能不能解释一下他们的区别?谢谢!
此外,我在《精通EJB》上看到有AccountLocal.java,AccountLocalHome.java,为什么在JBUILDER中没有呢?
gunwilove 2002-04-20
  • 打赏
  • 举报
回复
能结合应用谈谈您的理解吗?譬如当客户端调用EJB时,这些接口是怎样工作的?
puremoonstone 2002-04-19
  • 打赏
  • 举报
回复
为什么通过JBUILDER向导生成的EJB好象没有LOCAL接口呢?
我想知道当客户端调用EJB时,这些接口具体是怎样起作用的?谢谢!
wangtaoyy 2002-04-17
  • 打赏
  • 举报
回复
远程接口:远程访问使能,客户通过iiop调用,客户和EJB可以是分布的。其参数和返回按值传递,要求可以通过网络能传递。
本地接口:跟一般的接口没什么区别,客户和EJB在同一JVM中运行,参数和返回值没有限制,速度较快。
Home接口:通过远程调用创建或查找EJB.与远程接口对应,有相似的限制
本地Home接口:通过本地调用创建或查找EJB,与本地接口对应。

pengji 2002-04-17
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/topic/648/648068.xml?temp=.8095514
JSP是一种如日天的新型Internet/Intranet开发语言,可以在多种操作系统平台和多种Web服务器下使用。本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也适合具有一定JSP基础的开发人员深入研究使用。 前 言 JSP是SUN公司推出的一种新型的Internet/Intranet开发语言,和前一代Internet/Intranet开发语言(ASP、PHP)相比,JSP在以下几个方面有了重大的突破: 1) 通过JSP的扩展标签库和JavaBeans功能,网站逻辑和网站界面可以完美地分离。 2) 使用Enterprise JavaBeans,可以轻松地在JSP开发的Web实现事务、安全、会话等等企业级应用所需要的功能。 3) JDBC2.0提供了不同的数据库产品无关的数据库连接方式,更重要的是,数据库连接池提供了一种比普通的数据库连接方式效率高得多的连接方式。 JSP的语法基本上和Java是相同的,有Java基础的读者可以很快学会如何使用JSP,而没有Java语言基础的读者,只要循序渐进地阅读本书,一样可以成为JSP编程的高手。本书主要分为两个部分:第一部分为JSP基础部分。通过这一部分的学习,读者可以掌握JSP的基本使用方法,学会如何使虽JSP来开发一般的、小型Web应用。这一部分使用常见的Apache Group的Tomcat作为JSP引擎的例子。第二部分为JSP高级应用部分。这一部分主要讲述如何使用JSP进行大型Web应用的开发,为了方便读者学习,本书还专门讲述了SUN公司的J2SDKEE和B趴公司的Webloglc应用服务器的基本使用方法。 JSP可以在各种操作系统和各种Web服务器下使用,其代码基本上不需要任何改动就可以使用。本书为了适应大多数读者的情况,使用了Windows操作系统作为例子,具体的试验平台如下: Windows 2000Advanced Server Apachel.3.14 Intemetln允rmation Server 5.0 Tomcat 3.1 J2SDKEE l.2 BEA Wiblogic 5.1 除了上述平台,书的代码还在如下平台进行了测试: RedhatUnux 6.1 Apache l.3.12 TOmcat 3.1 BEA Weblogic 4.51 数据库系统主要使用了Microsoft SQL Server 7.0,部分代码使用了MySQL。作者 2000.11 前言 第一部分 JSP入门 第1章 概述 1.1 Java技术 1.1.1 Java技术的发展 1.1.2 JavaBeans 1.1.3 JDBC 1.1.4 J2EE 1.1.5 EJB 1.1.6 Java Servlet 1.2 JSP技术 1.2.1 JSP技术概述 1.2.2 JSP的优势及与其他Web开发工具的比较 1.3 JSP开发Web的几种主要方式 1.3.1 直接使用JSP 1.3.2 JSP+JavaBeans 1.3.3 JSP+JavaBeans+Servlet 1.3.4 J2EE开发模型 1.4 本书用到的软件及获取 第2章 预备知识 2.1 Java程序设计基础 2.1.1 Java语言规则 2.1.2 Java变量和函数 2.1.3 子类 2.1.4 this和super 2.1.5 类的类型 2.1.6 抽象类 2.1.7 接口 2.1.8 包 2.2 JavaBeans 2.2.1 JavaBeans的属性 2.2.2 JavaBeans的事件 2.2.3 持久化 2.2.4 用户化 2.3 Java Servlet 2.3.1 HTTP Servlet API 2.3.2 系统信息 2.3.3 传送HTML信息 2.4 SQL语言 2.4.1 SQL子类型 2.4.2 SQL语言的具体命令和使用 2.5 JDBC 2.5.1 什么是 JDBC 2.5.2 JDBC 产品 2.5.3 连接概述 2.5.5 一个简单的例子 第3章 JSP开发平台的建立:Tomcat 3.1 Tomcat的安装和直接使用 3.2 Tomcat和Apache的配合 3.3 Tomcat和IIS的配合 3.4 Tomcat的配置和常见问题 3.4.1 Tomcat的主配置文件:server.xml 3.4.2 Windows下代码保护的问题 3.4.3 Apache、IIS和Tomcat协作时工作 目录的添加 3.4.4 设定Tomcat作为Windows的服务而启动 3.4.5 在Tomcat建立新的Web应用程序 第4章 JSP的语法和语义 4.1 通用的语法规则 4.1.1 元素的语法规则 4.1.2 JSP的相对路径 4.2 注释 4.3 指令 4.3.1 page指令 4.3.2 include指令 4.3.3 taglib指令 4.4 内置对象 4.5 脚本元素 4.5.1 声明 4.5.2 表达式 4.5.3 脚本代码 4.6 动作 4.6.1 id和scope属性 4.6.2 标准动作 第5章 作为XML的JSP 5.1 为什么要使用XML相容的语法形式 5.2 关于文本类型的语法 5.2.1 jsp:root元素 5.2.2 公共标识符 5.3 指令 5.3.1 page指令 5.3.2 include指令 5.3.1 taglib指令 5.4 脚本元素 5.4.1 声明 5.4.2 脚本代码 5.4.3 表达式 5.5 如何将一个普通的JSP文件转换为一个XML 文档 5.6 JSP1.1的DTD文件 第6章 JSP基础实例 6.1 第一个JSP程序—HelloWorld! 6.2 注释的使用 6.3 脚本元素 6.3.1 声明 6.3.2 表达式 6.3.3 脚本代码 6.4 page指令 6.4.1 import 6.4.2 session 6.4.3 错误处理 6.5 包含其他文件 6.6 使用JavaBean 6.7 内置对象 6.7.1 用request对象获取客户端的数据 6.7.2 用response对象向客户端发送信息 6.7.3 其他内置对象 6.8 6.9 使用插件 6.10 使用session对象 6.10.1 会话的概念 6.10.2 session对象可用的方法和属性 6.10.3 session对象的基本例子 6.10.4 利用session制作一个购物车 6.10.5 JavaBeans的作用域 6.10.6 利用JavaBeans制作的购物车 6.11 使用application对象 6.11.1 应用的概念 6.11.2 application对象可用的方法和属性 6.11.3 application对象内包含的系统信息 6.11.4 利用application建立一个简单的聊天室 第7章 用JSP实现常见的Web应用 7.1 常见的Web应用及分析 7.1.1 留言板、论坛和社区 7.1.2 聊天室 7.1.3 搜索引擎 7.1.4 电子商务 7.1.6 后台管理系统 7.2 留言板 7.2.1 功能分析 7.2.2 功能实现和技术要点 7.2.3 代码和分析 7.3 进一步完善的留言板 7.3.1 功能分析 7.3.2 功能实现和技术要点 7.3.3 代码和分析 7.4 聊天室 7.4.1 功能实现和技术要点 7.4.2 代码和分析 7.5 下一步 第二部分 高级JSP技术 第8章 JSP开发平台的搭建:J2EE 8.1 J2SDKEE的安装和使用 8.1.1 软硬件的支持 8.1.2 安装 8.2 J2SDKEE的配置 8.2.1 JDBC的配置 8.2.2 事务处理 8.2.3 服务的端口号 8.2.4 日志文件 8.2.5 安全 8.2.6 钝化发生的内存极限 8.2.7 JNDI服务器主机 8.2.8 HTTP服务的发布目录 8.3 WebLogic的安装和使用 8.3.1 软硬件要求 8.3.2 安装和启动 8.4 WebLogic的配置 8.4.1 系统级参数的设置 8.4.2 将WebLogic作为HTTP服务器使用 8.4.3 使用ISAPI桥连接WebLogic和IIS 8.4.4 WebLogic配置示例 第9章 扩展JSP标签 9.1 概述 9.1.1 扩展标签的作用 9.1.2 如何开发扩展标签 9.1.3 简单的扩展标签 9.1.4 包含内容处理的扩展标签 9.1.5 能够协作的扩展标签 9.1.6 定义了脚本变量的扩展标签 9.2 标签处理类的开发 9.2.1 接口和基类 9.2.2 开发 9.3 标签库文件 9.3.1 taglib 9.3.2 tag 9.4 定位一个tld文件 9.4.1 在Web.xml定位一个tld文件 9.4.2 直接在JSP文件定位tld文件 9.5 扩展标签实例 9.5.1 得到父标签的数据 9.5.2 TestTag类 9.5.3 Title类 9.5.4 Data类 9.5.5 TLD文件 9.5.6 在JSP使用扩展标签 第10章 Enterprise JavaBeans 10.1 Java服务器端组件标准—EJB 10.1.1 EJB和JavaBeans 10.1.2 EJB的开发与使用的角色 10.2 Session Bean 10.2.1 Session Bean的状态管理模式 10.2.2 Session Bean的生命周期 10.3 Entity Bean 10.3.1 Entity Bean的特性 10.3.2 Entity Bean的生命周期 10.4 EJB的开发 10.4.1 Enterprise JavaBeans的实际处理文件 10.4.2 实现EJBObject文件 10.4.3 实现EJBHome文件 10.4.4 生成ejb-jar.xml文件 10.4.5 打包生成JAR文件 10.5 EJB的部署—J2SDKEE 10.5.1 使用deploytool打包EJB 10.5.2 使用deploytol部署EJB 10.6 EJB的部署—BEA WebLogic 10.6.1 生成可部署的ejb-jar包 10.6.2 部署WbLogic的ejb-jar包 10.7 使用EJB 10.7.1 本地访问EJB 10.7.2 远程访问EJB 10.8 JSP和EJB 10.9 EJB开发实例—电子商务应用 10.9.1 EJB的实现文件—TestCartEJB 10.9.2 实现Home接口TestCartHome 10.9.3 实现远程Object接口TestCart 10.9.4 EJB的Web组件TestCartWebImp 10.9.5 JSP文件 10.9.6 实例的内部运行逻辑 第11章 其他高级功能 11.1 JDBC2.0和JDBC数据库连接池 11.1.1 JDBC2.0新功能概述 11.1.2 结果集增强功能 11.1.3 批处理更新 11.1.4 对Java对象的持久性 11.1.5 数据库连接池使用实例 11.2 文件上载 11.2.1 实现机理 11.2.2 文件上载实例 第12章 JSP高级应用实例:网上书店 12.1 概述 12.2 扩展标签的使用 12.2.1 数据集作用的BookList标签 12.2.2 让数据循环输出的Books标签 12.2.3 输出数据的标签 12.2.4 控制页面前进、后退的标签 12.2.5 测试标签 12.3 EJB及其Web组件 12.3.1 ShoppingCart 12.3.2 Books 附录A JSP应用实例:网上教育代码 附录B JavaServer Pages白皮书 附录C 常用JSP相关网址

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧