`
joy_cz
  • 浏览: 135823 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Enterprise JavaBeans导论2

阅读更多

理解EJB组件
  你现在应该已经熟悉了整个EJB体系结构及其主要的部件。这一节更详细地描述了这些部件,并解释它们运行时的行为语意。
  
  Home接口
  EJB库使用enterprise bean的客户端通过它的home接口创建它的实例。Home接口包含一个或多个用来创建enterprise bean实例的create()方法。这个home接口不是由bean来实现,而是通过称为home object的类来实现。一个home object的实例在服务器中实例化,使得客户端可以访问它们。
  定位home object 一个home object的引用被放在名字服务中,客户端能通过JNDI访问它。EJB服务器一般提供某种名字空间的实现,虽然有时可以使用外部的名字空间。在这两种情况下客户端都必须知道名字空间的位置以及JNDI的上下文类。例如,一个客户端的applet可能接收名字空间和JNDI上下文类作为applet的参数。
  除了提供位置和类名,客户端也必须知道在名字树中定位home object.这些必须在客户端启动时提供。当部署者把enterprise bean部署进EJB服务器中时,他必须可以以参数形式指定名字树,如ejb/accounting/AccountsPayable.客户端必须获得这个完整的路径名来定位并获得AccountsPayable home object的引用。并不是说客户端通过JNDI获得容器。客户端使用JNDI查找home接口的实现。Home接口的实现由某个特殊的container来提供,但这是该容器厂商的细节,enterprise bean开发者和客户端应该忽略它。
  Home接口中的方法
  Enterprise bean开发者定义ejbCreate()方法的同时必须在home接口中声明与其相应的create()方法。实体bean可以包含finder方法以使得客户端能定位已有的实体bean. Home接口是通过继承javax.ejb.EJBHome来定义的。该接口包含如下的方法:
  
  public interface javax.ejb.EJBHome extends Remote {
  public EJBMetaData getEJBMetaData() throws RemoteException;
  public void remove(Handle handle) throws
  RemoteException,RemoveException;
  public void remove(Object primaryKey) throws
  RemoteException,RemoveException;
  一个bean的home接口可以象下面这样:
  public interface myHome extends EJBHome {
  public myRem create() throws RemoteException,CreateException;
  public myRem create(String str) throws
  RemoteException,CreateException;
  其中
  public interface myRem extends EJBObject { … }
  
  容器开发商负责提供实现home接口的home对象,因为只有开发商才能实现存贮enterprise bean的库的编码。
  
  容器
  定义容器在理解EJB规范时容器这个术语并不应从字面上简单地理解为类,而是一层代替bean执行相应服务的接口。容器开发商提供运行在EJB服务器中一套完成这些功能的工具和接口。
  这些服务包括:
  
  ·与二级存储中交换(对会话bean)
  ·持久性管理(对实体bean)
  ·实现创建和查找服务的home object的可用性
  ·在可通过JNDI访问的名字空间home object的可视性
  ·正确的创建、初始化和删除bean
  ·保证商业方法正确地运行在事务上下文中
  ·实现某一基本的安全服务
  ·从home object和EJBObject上的RMI上产生stub和skeleton
  
  容器和EJBObject对规范经常引用由容器或EJBObject提供的服务。这些服务只是用来说明而不暗示特殊类的服务需求。支持enterprise bean的EJBObject和容器类都由容器开发商提供。这些类必须完成bean容器的功能。对bean来说容器和EJBObject是不同的入口点,对某个特殊的服务提供支持独特的能力。例如,容器通过读部署描述符来知道应用于bean方法的事务属性。然而,这些商业方法通过EJBObject调用。
  EJBObject必须与容器通讯来确定调用商业方法的事务上下文。确定以后,EJBObject在调用商业方法以前建立事务上下文。重要的是EJBObject 和容器的协同工作来实现容器所需的事务。容器厂商提供二者的实现,但对二者的功能分割却是自由的。与home接口的关系
  目前厂商提供工具来读home 接口并产生作为容器的home object.在这种情况下厂商对每个enterprise bean类使用不同的容器类。容器厂商可以使用其它的实现策略,如一个容器类实现多个home接口,甚至一个标准的容器类创建独立的home object实现。唯一的必要条件是容器厂商必须使客户端能通过JNDI访问home object. 客户端和bean开发者都不需关心容器和home object的实现细节。
  
  Enterprise JavaBean
  
  Enterprise bean是开发者编写的提供应用程序功能的类。开发者可以选择创建会话bean或实体bean,通过实现不同的接口声明其部署描述符来加以区分。
  对于会话bean:
  public class myBean implements javax.ejb.SessionBean …
  对于实体bean:
  public class myBean implements javax.ejb.EntityBean …
  客户端不会直接访问enterprise bean中的任何方法。客户端通过EJBObject 间接调用bean中的方法,EJBObject就象一个代理一样。在把调用通过EJBObject传递时,容器开发商通过包装编码插入其自己的功能,这称为方法插入。方法插入的一个例子是为每个方法调用创建一个新的事务上下文,当方法返回到EJBObject时提交或回滚事务。
  当容器厂商的工具在安装bean产生stub和skeleton时,它产生bean的EJBObject一个stub和skeleton.实际上它并不创建bean本身的stub和skeleton,因为bean不会通过网络被访问。EJBObject是真正的网络对象。Bean 是包含应用相关的商业编码的代表。
  容器也可以调用bean中的某个方法。例如,容器保证当一个bean 实例生成后,home object中的create()的任何参数会传递bean相应的ejbCreate()方法。 Enterprise bean还有其它的接口和要求。然而,会话bean和实体bean的要求是不同的。这些在随后详述会话和实体bean的章节中会cover.
  
  Remote Interface
  
  编写完enterprise bean后开发者创建了一个客户端可访问创建方法的home interface,在home interface中每一个create()方法在相应的bean中都必须有一个ejbcreate()方法。同样,开发者必须创建描述客户端能够访问的商业方法的remote interface。
  因为所有的客户端调用都通过EJBObject,因此实现这个接口的是EJBObject而不是home object. Remote interface中列出的方法名和signature必须和实现bean的方法名和signature相同。这不同于home interface--方法signature是一样的,而名字却不同。以下是一个remote interface的例子:
  
  public interface Account extends javax.ejb.EJBObject {
  public void deposit(double amount) throws RemoteException;
  public void withdraw(double amount) throws RemoteException;
  public double balance() throws RemoteException;
  }
  
  所有声明的方法都必须抛出一个RemoteException例外,因为规范要求客户端stub是RMI兼容的。但这并不意味着排除了用其它的传输方式的stub/skeleton实现,如CORBA/IIOP.
  Remote interface继承javax.ejb.EJBObject接口,增加了额外的方法要求。
  
  EJBObject
  EJBObject是网络上可视的对象,包含stub和skeleton,作为bean的代理。Bean的remote interface继承了EJBObject接口,而EJBObject类实现这个remote interface,使得bean类有自己的EJBObject类。对每个bean类有一个定制的EJBObject类。
  如下是EJBObject接口的定义,被bean的remote interface继承:
  
  public interface javax.ejb.EJBObject extends java.rmi.Remote {
  public EJBHome getEJBHome() throws RemoteException;
  public Object getPrimaryKey() throws RemoteException;
  public Handle getHandle() throws RemoteException;
  public void remove() throws RemoteException,RemoveException;
  public boolean isIdentical(EJBObject other) throws RemoteException;
  }
  
  实现这个接口的EJBObject类是一个RMI服务器对象,因为它是他实现了一个RMI remote interface.注意bean本身不是一个remote object,在网络上是不可视的。当容器实例化了这个EJBObject类时,容器会初始化bean实例的引用,使得它能正确地delegate商业方法调用。
  厂商的实现是维护EJBObject实例和bean实例的一对一关系。因为remote interface包含EJBObject接口的方法,所以bean不必显式地实现这个接口,虽然它提供了列出的商业方法的实现。因为EJBObject必须正式地实现bean的remote interface,容器在bean安装时产生EJBObject的源代码,这些产生的源代码实现了bean的remote interface.典型的EJBObject有一个独特的类名,作为EJBObject类和bean的联系。  

FROM:http://java.chinaitlab.com/EJB/20117.html

分享到:
评论

相关推荐

    Applying Enterprise JavaBeans Second Edition

    Applying Enterprise JavaBeans Second Edition

    Enterprise JavaBeans 3.0

    由于提供的文件内容中并没有实际的关于"Enterprise JavaBeans 3.0"的具体知识点,而只是提到了一本书的标题、描述和标签,并且重复了大量访问网站的信息。为了满足您的要求,我将从标题和描述中提到的《Enterprise ...

    Enterprise JavaBeans 3.0(第5版) chm

    本书主要介绍EJB3.0标准,是获奖权威参考书Enterprise JavaBeans的最新第5版。全书内容主要分为两大部分,第一部分是EJB 3.0的标准技术手册,主要介绍EJB概念、EJB工作原理及使用方法;第二部分是JBoss实践指南,...

    Enterprise JavaBeans 3.0中文版(第5版)

    ### Enterprise JavaBeans 3.0概述 #### 一、企业级应用开发背景 在现代企业级应用开发领域,Java技术一直扮演着至关重要的角色。随着业务需求的不断增长和技术的快速发展,开发人员需要构建出更加灵活、高效且可...

    Mastering Enterprise JavaBeans

    Mastering Enterprise JavaBeans Chinese Version.

    Enterprise JavaBeans 3.0 Documentation

    Enterprise JavaBeans(EJB)是Java平台上用于构建可扩展、安全和事务处理的企业级应用程序的框架。EJB 3.0是该技术的一个重大更新,它引入了许多改进,旨在简化开发过程并提高开发者效率。本文档集合是EJB 3.0规范...

    Mastering Enterprise JavaBeans 2nd Edition

    - **EJB (Enterprise JavaBeans)**:是一种服务器端组件模型,主要用于构建企业级应用程序,提供了事务管理、安全性、持久性等功能支持。 ##### 2. **EJB容器的作用** - **容器管理**:EJB容器负责管理EJB组件的...

    Mastering Enterprise JavaBeans 3rd Edition .pdf

    ### 《Mastering Enterprise JavaBeans 第三版》关键知识点概览 #### 一、书籍基本信息 - **书名**:《Mastering Enterprise JavaBeans》第三版 - **作者**:Ed Roman, Gerald Brose, Rima Patel Sriganesh - **...

    Enterprise JavaBeans 4th Edition

    《Enterprise JavaBeans 4th Edition》是一本专为深入理解J2EE(Java 2 Platform, Enterprise Edition)和Web服务的开发者所准备的经典教程。在Java企业级开发领域,Enterprise JavaBeans(EJB)是核心组件之一,它...

    Reilly.Enterprise.JavaBeans.3.1.6th.Edition.2010

    《Reilly.Enterprise.JavaBeans.3.1.6th.Edition.2010》是针对JEE6(Java Enterprise Edition 6)平台的一本权威指南,特别关注于Enterprise JavaBeans(EJB)3.1版本。这本书由Oracle Corporation认证,为希望获得...

    Enterprise JavaBeans, 3.0

    Enterprise JavaBeans™ is the core component technology of the Java Enterprise Edition platform. It is an enterprise infrastructure designed to provide developers with the automatic management of many...

    enterprise javabeans2.0程序设计

    Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的核心组成部分,用于构建可扩展、安全且事务处理能力强的服务器端应用程序。 在EJB 2.0版本中,主要包含了三种类型的组件:会话bean(Session Beans)、...

    Enterprise JavaBeans™ 3.1

    ### Enterprise JavaBeans™ 3.1 技术详解 #### 概览 Enterprise JavaBeans (EJB) 3.1 是一项重要的企业级应用开发技术规范,它在 EJB 3.0 的基础上进一步简化了应用程序的开发流程,并引入了一系列的新特性来提高...

    mastering enterprise javabeans

    2. **EJB容器**:学习EJB容器如何为Bean提供服务,如生命周期管理、事务处理、安全性和资源管理。理解无状态会话Bean和有状态会话Bean的区别。 3. **JNDI**:Java Naming and Directory Interface在EJB中的应用,它...

    Mastering Enterprise Javabeans 3.0.pdf

    《精通企业JavaBeans 3.0》一书深入探讨了JavaBeans规范的最新版本,即3.0版,这是Java企业级开发中的一个重要里程碑。JavaBeans是Java平台的一部分,主要用于构建可重用的组件,这些组件可以被集成到各种应用程序中...

    精通Enterprise JavaBeans,第二版Mastering Enterprise JavaBeans, 2nd Edition

    涵盖了从EJB体系结构的基础到开发事务性,可伸缩且安全的多用户企业应用程序所需的,从EJB开发开始的所有内容。

    Special Edition Using Enterprise JavaBeans 2

    《Special Edition Using Enterprise JavaBeans 2》是一本深入探讨企业级JavaBeans(EJB)技术的专业书籍,专注于第二版的内容。EJB是Java平台上的一个核心组件,它为构建可扩展、安全且易于管理的企业级应用程序...

    Special Edition Using Enterprise JavaBeans™ 2.0

    Special Edition Using Enterprise JavaBeans™ 2.0

Global site tag (gtag.js) - Google Analytics