java

位置:IT落伍者 >> java >> 浏览文章

Java编程语言中EJB技术的详细说明


发布日期:2023年05月07日
 
Java编程语言中EJB技术的详细说明
EJB技术概论

Enterprise JavaBean (EJB) 规范定义了开发和部署基于事务性分布式对象应用程序的服务器端软件组件的体系结构企业组织可以构建它们自己的组件或从第三方供应商购买组件这些服务器端组件称作 Enterprise Bean它们是 Enterprise JavaBean 容器中驻留的分布式对象为分布在网络中的客户机提供远程服务

两层和三层环境

在两层客户机/服务器环境中程序员编写与供应商特定软件紧密结合的应用程序通常两层应用程序直接从客户机访问数据库服务或事务服务有时这种应用程序称作胖客户机因为应用程序逻辑驻留在客户机上这使客户机变得庞大和复杂下图描绘了这一特性

三层客户机/服务器应用程序使用一个中间或中间层应用程序服务器它在客户机应用程序和后端数据库之间操作中间层存储了系统的商业逻辑并协调客户机上与后端数据库交互的显示

在两层模型上使用三层体系结构是出于以下两个动机

改进的可伸缩性可用性和性能

改良的商业系统灵活性和可扩展性

由于两层系统利用了客户机的处理能力因而它具有良好的性能但许多客户机对单一后端资源(如数据库)的特性会产生瓶颈随着客户机数量逐渐增大这会抑制可伸缩性可用性和性能三层系统试图通过更有效地管理后端资源来消除这个瓶颈利用资源管理技术如合用和集群中间层服务器可以实现这个目标合用允许许多客户机共享不充足的资源(如数据库连接)这样可以减少后端服务器的工作负荷从而使三层系统更有效由于多个服务器和资源可以支持故障恢复并均衡不断增加的客户机数量的负载因此集群可以使三层系统变得更具可用性和可伸缩性

三层系统比相应的两层系统更灵活且更可扩展这是因为商业逻辑和服务(如安全性和事务)都驻留在中间层并且基本上独立于客户机应用程序如果正确实现了三层系统那么在使用 Enterprise JavaBean 的情况下服务会自动应用于客户机请求因此服务是看不见的由于服务对于客户机不可见因此对服务的更改也不可见如果正确实现了三层系统那么中间层上对商业逻辑的更改和增强也可对客户机应用程序隐藏

另外如果客户机与中间件组件是以 Java 编程语言实现的那么它们极有可能具有可移植性可以非常容易地将实现客户机和应用程序服务器的类文件重新安置到当前最合适的主机上

在最近二三年中一些供应商发布了基于 Java 的三层应用程序服务器这些服务器全都可以与后端服务器操作交互并管理这些操作尽管这些中间件产品支持分布式体系结构这些体系结构在两层设计上(以及 Java 之前的应用程序服务器)做了非常重大的改进它们的主要限制是编程模块越来越趋向于特定于某个供应商这意味着公司必须大量购买一家供应商的型号而且系统是不可移植的从而导致了供应商锁定

随着面向对象编程范例日益普及分布式对象系统已经逐渐壮大现在已经存在一些分布式对象技术最流行的是由 Object Management Group 创建的 CORBASun Microsystems 的 Java RMI (JRMP) 和 Microsoft 的 DCOM 和 MTS(又名 COM+)每种都有其自身的优缺点Sun Microsystems 的 Enterprise JavaBean 是最新加入这个圈子的技术在某些方面它既是这些技术的竟争者同时也是合作者

由于在三层计算中使用了其它开放标准(如 LDAP)CORBA(公共对象请求中介体系结构)在解决供应商垄断问题方面取得了成功不幸的是虽然 CORBA 根本改变了分布式计算但经验证编程模块太复杂而且供应商不能一致地遵守规范CORBA 有高级的分布式计算但已证明太难而无法实现并且其可移植性也比预期差

Enterprise JavaBean (EJB) 是 Sun Microsystems 对 CORBA 的可移植性和复杂性的解决方案EJB 引入了比 CORBA 更简单的编程模块它可以让开发人员创建可移植分布式组件称作 Enterprise BeanEJB 编程模块可以让开发人员创建安全的事务性的和持久的商业对象 (Enterprise Bean)该对象使用非常简单的编程模块和声明属性与 CORBA 不同例如访问控制(授权安全性)和事务管理等设施非常易于编程CORBA 需要使用复杂的 API 来利用这些服务而 EJB 则根据一种称作部署描述信息的特性文件中的声明将这些服务自动应用到 Enterprise Bean这个模型确保了 bean 开发人员可以集中精力编写商业逻辑而容器会自动管理更复杂但又必要的操作

由于 EJB 规范颁布了一组明确的 EJB 容器(供应商服务器)和 EJB 组件(商业对象)之间的契约因此 EJB 中实现了可移植性这些契约或规则确切规定容器必须为 Enterprise Bean 提供什么服务bean 开发人员需要使用什么 API 和声明属性来创建 Enterprise Bean由于详细指定了 Enterprise Bean 的生命周期因此供应商知道如何在运行时管理 beanbean 开发人员确切知道 Enterprise Bean 在其存在期间可以做什么

Enterprise JavaBean 简化了分布式对象的开发部署和访问EJB 分布式对象(一种 Enterprise Bean)的开发人员只需依照为 Enterprise JavaBean 建立的契约和协议实现对象支持 EJB 的应用程序服务器可以也确实使用任何分布式网络协议包括本地 Java RMI 协议 (JRMP)专有协议或 CORBA 的网络协议 (IIOP)不管在某个特定产品中使用的基本网络协议是什么EJB 使用相同的编程 API 和语义以 Java RMIIIOP 访问分布式对象协议的细节对应用程序和 bean 开发人员隐藏;对于所有供应商来说定位和使用分布式 bean 的方法是相同的

Enterprise Bean 与 JavaBean 不同JavaBean 是使用 javabeans 包开发的它是 Java 标准版的一部分JavaBean 是一台机器上同一个地址空间中运行的组件JavaBean 是进程内组件Enterprise Bean 是使用 javaxejb 包开发的它是标准 JDK 的扩展是 Java Enterprise Edition 的一部分Enterprise Bean 是在多台机器上跨几个地址空间运行的组件因此 Enterprise Bean 是进程间组件JavaBean 通常用作 GUI 窗口小部件而 Enterprise Bean 则用作分布式商业对象

上一篇:J2ME手机开发:java虚拟机是什么

下一篇:java如何发送电子邮件?