EJB分布式对象基础篇

开发 后端 分布式
本文向您介绍EJB分布式对象应用程序的服务器端软件组件的体系结构。

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


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

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

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

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

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

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

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

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

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

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

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

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

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

【编辑推荐】

  1. 基于EJB技术的商务预订系统的开发
  2. Enterprise JavaBeans EJB技术
  3. 学习EJB编程的简单过程
  4. EJB入门学习代码实例
  5. 使用EJB事务属性控制事务的作用域
责任编辑:佚名 来源: 163博客
相关推荐

2020-04-20 19:00:30

程序员分布式事务架构

2017-04-14 09:48:25

分布式存储系统

2021-06-02 22:16:56

框架CAPBASE

2022-07-10 20:24:48

Seata分布式事务

2019-10-10 09:16:34

Zookeeper架构分布式

2017-09-01 05:35:58

分布式计算存储

2019-06-19 15:40:06

分布式锁RedisJava

2023-05-29 14:07:00

Zuul网关系统

2021-01-19 05:43:33

分布式2PC3PC

2021-10-26 19:37:15

RedisRedis应用篇

2021-03-14 18:23:18

边缘计算对象存储分布式计算

2021-06-28 14:45:07

分布式框架操作

2021-01-28 09:50:29

分布式对象SharedObjec

2022-04-08 11:08:17

分布式数据接口同步机制

2017-10-27 08:40:44

分布式存储剪枝系统

2023-11-03 08:13:35

ZAB协议负载均衡

2015-08-03 15:48:42

Hadoop大数据

2023-10-26 18:10:43

分布式并行技术系统

2022-10-10 17:21:50

固态硬盘分布式云存储

2019-12-13 08:00:00

分布式SQL数据库架构
点赞
收藏

51CTO技术栈公众号