`

EJB的体系结构概述

    博客分类:
  • EJB
阅读更多
客户如果得到一个远程bean的一个引用呢?
在EJB的底层,采用了java一种分布式技术:RMI。利用RMI,你的客户对象好像在做一个远程方法调用,但实际上,它只是在一个“代理”对象上调用方法,这个代理对象在客户所在的同一个堆中运行。这个代理称为“桩”,它会处理所有底层的网络socket和流。

如果你是一个对象,而且有另一个对象的引用,那个对象就必须和你在同一个堆里。否则不能直接引用。
JAVA RMI可以解决这个问题,它为客户提供了一个代理对象,这个称为“桩”(stub),这个代理对象是客户和远程对象之间的中间人,客户在桩上调用方法,桩则负责完成与远程对象的底层通信(socket和流)。

远程对象中有客户想调用的方法。但是当桩建立与服务器的网络连接时,服务器上必须有人来接收到来的流中的消息,并把它转化为对远程对象上的一个方法调用。RMI负责方法调用的服务器端。服务器端接收socket连接的对象称为骨架(skeleton)。与客户端的桩对应。见图所示。





客户调用远程方法,如果网络或服务器出现故障就会出错。这就是为什么java rmi中所有远程方法都必须声明一个java.rmi.RemoteException异常,它是一个已检查异常,即如果不给于处理,必须声明抛出。
不需要程序员自己来写桩和骨架,使用RMI编译器就可以生成桩和骨架。

桩和骨架会完成一个完整的往返通信。要负责网络上传递的值进行包装(由客户端的桩进行)和解包(由服务器端的骨架进行)。不过,如果参数本身不可传递,这种做法就不可行。可传递的值必须是以下类型:
1,基本类型
2,Serializable对象
3,由1或2对象组成的数组或集合
4,Remote(远程)对象
向一个远程方法传递对象时,到底传递的是什么?要知道本地方法调用,传递参数为对象时,对象本身并不会传递,而只是新建了一个指向对象的引用而已。但是,远程调用,

java按照对象副本来传递对象,对象的到串行化副本会传递到远程对象。
如果父类实现了Serializable接口,则无论子类是否显示实现该接口,都视为实现了串行化接口。

通过远程方法调用传递一个远程对象??
当通过一个远程方法传递远程对象时,Java实际上发送的是这个远程对象的桩。换句话说,在运行时,远程对象还呆在原理的地方,在网络上传递的只是它的桩而已。
见传递远程对象图







把一个串行化对象作为参数或返回值传递时,最后确保对方有所传递类型的类文件,才能进行逆串行化。

远程对象和桩必须有哪些共同之处
客户怎么知道要调用哪个方法?
桩怎么知道远程对象有哪些方法?
??


答案是利用一个接口。将它成为业务接口或者是远程接口,它定义了客户想要调用的业务方法。远程对象的业务接口必须是一个远程接口。远程对象和桩实现了同样的接口,即远程接口,远程接口必须扩展自java.rmi.Remote,而且每个方法声明抛出java.rmi.RemoteException异常。

在EJB中,远程对象(EJBObject)是bean的保镖。bean只是坐在一边,不受客户调用影响,而(EJBObject)实现远程接口,并得到远程调用。

远程对象和桩实现了同样的接口,即远程接口,也即业务接口,在EJB中,远程接口扩展的是javax.ejb.EJBObject,而不是java.rmi.Remote。EJBObject继承了Remote接口。不过没有实际的业务逻辑行为。bean类没有实现业务接口(从正式的java语法角度来看),不过bean才是真正的业务逻辑实现者。



注意:实现一个接口时,必须要实现这个接口从它的超接口继承来的所有方法。
bean没有实现远程接口,是因为bean绝对不会作为一个远程对象。换句话说,你绝对不希望有人拥有实际bean的桩!以防止客户与桩进行直接交互。

见图




那谁才是真正实现组件接口(远程接口、业务接口)的类呢?换句话说,谁来创建EJBObject类呢?
答案是容器来建。你来声明方法,但由容器实现你的组件接口。要注意你的组件接口是一个扩展了EJBObject的接口,所有容器不仅实现你的业务方法,还有实现EJBObject的方法。不过容器怎么知道这些方法要实现什么业务逻辑呢?记住,容器不实现实际的业务逻辑。这些业务方法真正是由你的bean来实现的。

由程序员负责创建组件接口、bean类和home接口,而容器负责创建EJBObject类来实现已定义的组件接口,实现EJBObject的桩((与EJBObject对话),home类(实现定义的home接口),和home桩类。

容器怎么创建EJBObject、Home还有桩,什么时候创建呢?

部署一个bean时,容器会检查部署描述文件,根据它得到bean。部署描述文件给出了组件接口和远程home接口的完全限定名。一旦容器得到这些接口,就会生成代码。因为它们都是远程的,所有容器还会创建客户端桩,这些客户桩知道怎么反过来与远程对象通信。

  • 大小: 21.9 KB
  • 大小: 23.9 KB
  • 大小: 25.3 KB
  • 大小: 22.4 KB
分享到:
评论

相关推荐

    基于EJB组件的分布式应用开发

    EJB体系结构概述 EJB是J2EE服务器端的一种软件组件,适用于开发和部署多层次、分布式的、面向对象的Java应用系统。EJB的体系结构主要包括以下几个部分: - **EJB服务器**:管理EJB容器的高端进程或应用程序,提供...

    实战EJB.pdf

    EJB体系结构包括三个主要部分:客户端、EJB容器和EJB组件。 1. **客户端**:负责与最终用户交互并调用EJB组件提供的服务。 2. **EJB容器**:管理EJB组件的生命周期,处理事务、安全性和持久化等非功能性需求。 3. *...

    EJB概述(上) java 数据库操作

    #### EJB技术体系结构介绍 EJB(Enterprise JavaBeans)是一种基于Java的企业级应用开发模型,它通过组件化的形式为开发者提供了构建复杂业务逻辑的能力。EJB技术的核心在于它将业务逻辑封装在独立的可重用组件中,...

    基于层次消息总线的体系结构

    #### 二、基于层次消息总线的体系结构概述 ##### 2.1 架构核心概念 HMB风格的核心是消息总线,它作为系统中的连接件,负责消息的分派、传递、过滤以及处理结果的返回。消息总线的存在使得系统具有高度的扩展性和...

    一个关于EJB的实验报告........

    EJB概述 EJB是一种标准的Java API,它定义了一组接口和生命周期方法,使开发者可以创建在Java应用服务器中运行的可重用组件。EJB组件由容器管理,负责提供诸如事务处理、安全性、资源管理等服务,允许开发者专注于...

    基于J2EE的水务电子政务体系结构研究.pdf

    #### 水务电子政务体系结构概述 水务电子政务系统通常涉及水利、供水和排水等多个方面,因此其体系结构非常复杂。该系统主要包括两大部分:水务政务管理系统(内网)和水务公众服务系统(外网)。这些系统支持办公...

    基于EJB中间件技术的研究

    EJB2.1规范将其定义为分布式计算体系结构,是安装在应用程序服务器中的Java组件,支持命名、安全、事务等功能。 总结,EJB中间件技术是构建大型、复杂企业级应用的关键,它利用中间件的优势,如简化开发、提高效率...

    电子教程:EJB开发

    EJB体系结构包括三个主要角色:客户端、容器和Bean。客户端通过接口与Bean交互,容器负责管理和提供Bean的服务,而Bean则实现了业务逻辑。 - **客户端(Client)**:调用EJB服务的应用程序部分,可以是其他Java应用...

    WebLogic Server J2EE 体系结构简介 .rar_J2EE_weblogic

    **J2EE体系结构概述** J2EE体系结构主要分为三层:表现层、业务逻辑层和数据访问层,也称为客户端层、应用服务器层和数据库层。 1. **表现层**:这是用户与应用交互的地方,通常包括Web浏览器或瘦客户端应用程序。...

    软件体系结构复习重点.docx

    ### 软件体系结构复习重点...以上内容概述了软件体系结构领域的核心概念和技术,对于深入理解和掌握软件体系结构的基础知识至关重要。通过学习这些知识点,可以更好地应对软件开发中的挑战,提升软件项目的质量和效率。

    精通Eclipse Web开发--Java体系结构、工具、框架及整合应用

    ### 精通Eclipse Web开发—Java体系结构、工具、框架及整合应用 #### Eclipse在J2EE开发中的角色及其扩展插件Lomboz Eclipse作为一个强大的集成开发环境(IDE),尤其受到Java开发者的青睐。对于进行企业级应用...

    软件体系结构课后复习习题ppt课件.ppt

    1. **软件体系结构概述**: - 软件危机:指的是软件开发过程中遇到的如成本过高、进度延迟、质量难以保证等问题。 - 重用和软件复用的层次:包括代码复用、模块复用、组件复用、系统复用等,从低到高逐级递增复杂...

    EJB的简单介绍

    EJB的体系结构主要由三类Bean组成:实体Bean(Entity Beans)、会话Bean(Session Beans)和消息驱动Bean(Message Driven Beans)。每种Bean都具有特定的功能和应用场景: 1. **实体Bean**:负责数据持久化,可以...

    基于Java开发的EJB技术应用探究 (1).pdf

    如此一来,企业开发商无需再编写体系结构运行的活动、安全、共享、链接等代码,这些任务在EJB中已经委托给了服务器厂商来完成。 EJB技术的优点 EJB技术的优点在于它可以实现很多系统级的功能,如安全、共享、命名...

    j2ee_EJB

    **EJB体系结构:** - **容器**:容器是EJB组件运行的基础,提供诸如事务管理、安全管理、并发控制、持久化管理、资源池管理(如数据库连接)、管理接口、负载均衡和容错等服务。 **EJB的角色:** - **EJB Server ...

    精品(2021-2022年)资料软件体系结构作业.docx

    5. **性质研究不足**:对软件体系结构性质的研究还不够深入,缺乏明确的优良体系结构的标准。 综上所述,软件危机和软件重用是IT行业中非常重要的议题,它们不仅影响着软件开发的质量和效率,也推动了软件工程领域...

Global site tag (gtag.js) - Google Analytics