Enterprise JavaBean专题二


EJB的设计模式和命名约定:

 

Enterprise JavaBean有大量的设计命名约定。这样的编程体系结构虽然有一定的限制。这样的话,虽然还没有应用程序,但为EJB服务器和容器提供了虚拟的应用程序。

可以通过三种途径来建立一个基于对象的,多层体系结构的分布式系统,每种模式都定义了一些接口和命名约定。

       

    1. 无状态服务途径(无状态会话Bean:stateless Session Bean)。

      无状态的服务途径是通过Bean对象的操作向客户提供一种功能函数。但不保持会话的状态。当客户使用无状态的Bean对象时,客户无法提供上一次操作的信息。

       

    2. 基于会话途径(有状态会话Bean:stateful Session Bean)

      基于会话途径产生了一个中间层的对象,称为会话(Session)。这个会话可以看成是客户的代理。会话(Session)的生命是由客户和所在的服务程序共同决定的。会话完成后,客户就可以把会话对象删除。或者服务终止,会话对象将会超时。对象变成无效状态。

       

    3. 持续对象途径(实体Bean:Entity Bean)

持续对象设计模式是将Enterprise Bean与存储数据库中的一块数据绑定。提供了操作这块数据的一些方法。持续对象由多个客户共享的。其生命期是由存储数据的数据库决定的。

EJB的底层结构(Enterprise JavaBeans infrastruct)

容器(Container)和服务提供者(Server Provider)实现了EJB的底层结构。底层结构处理EJB的分布式任务,事务处理,安全性方面的功能。EJB规范定义了底层结构和Java API适应各种情况的要求。没有去指定用什么技术,平台或协议来实现。

Enterprise beans, 容器(container),服务器(server)展示了EJB底层结构的要求,EJB底层结构必须提供客户和Enterprise beans通信的通道。虽然EJB规范没有规定,但保证通道的安全也是很重要的。特别是当客户通过internet访问远程的Enterprise beans时,通信安全尤其重要。EJB底成结构也必须能够对加强Enterprise beans 的访问控制。

 

必须保证Enterprise beans所有数据的持久性。EJB的底层结构必须提供在企业级的计算环境中与现存系统的相结合能力。Beans的所有的通信都是分布式事务的一部分,需要由EJB底层结构来管理。对于一个的配置,EJB底层必须对提供钩子(hooks)来管理分 接τ谩?/p>

容器(Container)

容器是EJB里面最重要的概念。因为它最大程度的向程序开发人员提供了方便。通过提供对象定位机制,数据重组机制等,基于对象的中间层软件平台如CORBA或者远过程调用RMI是把程序开发人员从网络传输中解放出来。容器的概念则更进一步,简化了分布式应用程序那些复杂的方面,如:安全性,事务协调性,数据持久性等。

一旦Enterprise Beans准备好可以配置了。就将Enterprise Bean打包成一个标准的JAVA文件(ejb-jar文件)。一个ejb-jar文件可以包含一个或多个的Enterprise Beans。对每一个Enterprise bean,都由它自己的接口,类,和配置描述器。

Enterprise Bean提供者(Enterprise Beans Provider)提供如下信息给ejb-jar 文件:

     

  1. Enterprise Beans 的远程接口,远程接口说明了客户端能调用的函数。

     

  2. Enterprise Beans 的本地接口,本地接口定义了使客户生成和定位一个Enterprise Beans的实例的方法。

     

  3. Enterprise 类本身,实现了Enterprise beans 的语义。

     

  4. Deploy Descripor配置描述器,配置器通过利用配置描述器来提供没有在源代码中声明的信息。例如方针和属性。EJB的1.0规范把配置描述器定义为javax.ejb.deployment,SessionDescriptor类或者javax.ejb.deployment.EntityDescriptor类的一个实例,但是在1.1版本中不这样做。而是用XML来定义配置描述器。

配置一个Enterprise Bean 就是将一个Enterprise Bean安装到容器中去。安装过程包括了如下几个方面:

     

  1. 保证不同的Enterprise beans能够协同在一起工作。

     

  2. 用名字服务来注册一个Enterprise Bean

     

  3. 通过EJB服务的通信系统提供访问EJB的入口。

     

  4. 执行事务管理和安全方针。

在一个EJB容器中可以又任意多个Enterprise beans。除了安装和执行以外,容器还提供了配置Enterprise beans的工具。

为什么要使用Inprise的EJB 容器?

Inprise EJB容器提供了如下的完全服务:

     

  1. 完全支持EJB1。1规范。

     

  2. 一个有效的运行和管理EJBs的容器。

     

  3. 提供命名服务,事务服务,植入Java RDBMS的内部。编程,配置简单。

     

  4. 充分的例子来演示怎样使用EJBs和EJB容器。

对于Enterprise beans的开发者来说,EJB 容器是一个高级Enterprise类产品。它有如下优点:

完整的,灵活的运行时环境:

     

  1. EJB容器完全实现了EJB1。1的规范,包括了它的所有功能。

     

  2. 每一个由Inprise提供的工具产生的Enterprise bean都既是Enterprise bean 对象又是CORBA对象。

     

  3. EJB容器能够进行单独配置,100%的纯JAVA的服务。也可以作为完全的分布式的配置。这样的灵活性意味着你能够根据你的要求调整你的应用程序。

     

  4. 与其它的EJB服务不一样,Inprise 的EJB容器服务并没有限制一定要分开。可以将任意个数的Enterprise beans放在任意个数的容器中,这些容器也可以放在任意个数主机上。并且支持分布式的事务协议,允许Enterprise beans的分别裁定。允许先部分的配置你的应用程序。而达到最优化的配置性能。

Inprise 的EJB是建立在Visibroker和RMI—IIOP之上的。

     

  1. EJB容器是建立在Inprise的Visibroker之上的。VisiBroker已经被证明的在各种条件下都是ORB的领导角色。无论在各大公司的联合测试下,或者在实际的应用环境中。VisiBroker都提供了一个很好的的运行时性能。

     

  2. 为了更好的性能,Visibroker使用了大量的运行时优化,高级的多路链接,链接池管理,线程池管理。

     

  3. 客户和Enterprise beans,多个Enterprise benas之间,Enterprise beans 和其它的CORBA对象之间的通信都是通过用VisiBroker的IIOP方式进行的。VisiBroker完全支持CORBA2.3规范,RMI—IIOP通过值传递的方式来实现。这意味着,就象在CORBA2.3规范中一样,复杂的Java数据类型能够用新的IDL值类型写到IIOP里面去。数据和服务之间怎样相互协调传送复杂的数据类型是很重要的。否则,就会危及协同能力。EJB容器能够与其他所有支持RMI-over-IIOP协议的对象的进行协同工作。

     

  4. 安全特性是由VisiBroker所有的。保证信用是从客户传向服务。

     

  5. 事务上下文也是由Visibroker所有。保证当CORBA客户开始一个事务时或者访问EJB容器的服务时,把事务上下文传向服务。当服务需要调用环境中的各项资源时,就要使用到事务上下文。

     

  6. 事务的两阶段提交是由Inprise的ITS管理的。如果JDBC支持两阶段提交协议,EJB也就支持两阶段提交协议。但是,如果JDBC不支持两阶段提交协议的话,就不能完成两阶段提交。

Enterprise的EJB容器也是一个CORBA对象:

Inprise 的java2iiop编译器和EJB容器一样,都与CORBA兼容。EJB容器能够理解RMI调用,但是,它用IDL来存放接口定义。虽然Java2iiop编译器从java接口产生了stub 和skeleton,但也能够从java接口中产生IDL。用在其他语言里面。对于一个CORBA客户端,EJB容器是一个CORBA服务,EJB容器的工具就是与控制EJB的功能相同的CORBA工具。

EJB容器是建立在JNDI,CosNaming和JTS/OTS基础上的。他们都是完全支持CORBA的。

容器对不同的Enterprise beans 的支持:

EJB容器的主要的特征就是它提供对各种各样的Enterprise beans的管理和支持。包括:

     

  1. 有状态或无状态的会话 Enterprise beans。

     

  2. 实体beans。包括容器管理持久性(container-manager)和Bean管理(beans-manager)的持久性。

EJB容器可以包括一个或多个的jar文件。每一个jar文件又能够包括多个的Enterprise beans。每个Enterprise bean都包含一个配置描述器,一个本地(EBJHome)接口,一个远程(EJBremote)接口和还有Enterprise bean的实现代码。

Inprise 的EJB容器支持多个当前客户,包括如下两个方面:

     

  1. VisiBroker提供了连接管理,允许一个服务同时支持多于TCP连接数的客户连接。用最近最少使用算法来关闭连接。

     

  2. 对于客户来说,容器本身是无状态的。意味着容器并没有为每一个新的Enterprise bean会话分配内存。这样,容器就能够支持任意多的无状态的会话Enterprise beans。

支持配置:

Inprise 容器提供了产生代码的编译器。也提供了一个验证的工具,用来在配置之前检查Enterprise beans支持EJB1.1的JNDI命名是否是基于XML的配置描述器。

事务管理者:

事务管理者提供了事务管理的手段。包括分布式的两段提交协议的支持。遵从最新的SUN公司JTS规范。也支持最新的OMG的OTS规范。在开发时尽量少用JTS而在配置时使用相对健壮的ITS。

JDBC链接池和事务综合:

所有JDBC访问数据库都是通过DataSource对象的实现来完成的。

命名服务:

命名服务提供了分布式的命名管理。命名服务遵从Java的命名和目录规范(JNDS)。也遵从OMG的cosNaming规范。与事务服务类似,在配置的时候,你可以使用JNS,也可以用更健壮的INS。JNDI提供的容器能够运行在其他的JNDI实现之上。这样就能够使用其他的命名服务(例如:LDAP)。

安全性的支持:

在CORBA之上的Inprise 的安全服务是附加上去的。

Java数据库:

Java数据库提供了一个全关系型的高性能的数据库来存储Enterprise beans的状态。Java数据库可以运行在同一个进程容器中。为了提高性能,也可以运行在一个单独的进程中。实际上,Java 数据库是即插即用的。意味着终端用户能够用一个另外的实现就取代了所有的JAVA版本。例如,能够实现一个用别的数据库来存储会话状态和实体数据的后台存储。

容器管理的Entity beans的持久性:

Inprise 提供了一个容器管理持久性(Container-Managed Persistence)引擎来提供透明的对象关系映射以及在纯JDBC上的持久性框架。进一步,第三方的工具可以通过开放的API插进来。

与其他组件的结合:

在配置环境的真实条件里,EJB的四个模式能够与以下的组件工作在一起:

     

  1. 客户链接到Enterprise beans对象组件。客户可以是有java Enterprise bean接口的EJB对象,或者有IDL接口的CORBA对象。在Inprise 的EJB容器服务中,每一个Enterprise bean都同时是EJB对象也是CORBA对象。CORBA客户能够用所有支持CORBA的程序设计语言来实现,包括C++,Java,Delphi。

     

  2. 从Enterprise bean的数据库访问组件。Enterprise beans对象是容器管理(container-managed)或者Bean管理(beans-managed)的实体bean对象。

     

  3. 后端服务:CORBA服务,用C++,Java或Delphi实现,运行在任何兼容CORBA的ORB中。EJB服务,包括所有其他的Inprise的服务,或者其他支持IIOP的代理商的服务。系统原来的服务,包括ERP系统,main-frame程序等等。
本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3