`

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概述(上) java 数据库操作

    介绍了EJB技术的体系结构。 EJB的上层的分布式应用程序是基于对象组件模型的,低层的事务服务用了API技术。EJB技术简化了用JAVA语言编写的企业应用系统的开发,配置,和执行。EJB的体系结构的规范由Sun Microsystems...

    软件构件与中间件技术

    主要内容: 概述:中间件与软件构件的动因... Web Service体系结构:Web Service体系结构简介、SOAP、WSDL、UDDI。 本书的关注点主要有两个: 如何开发与使用基于特定中间件的构件 如何使用中间件提供的各种支持

    J2EE应用开发详解

    第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用服务器 13 1.5 小结 16 第2章 建立...

    《JSP简明教程》课件

    EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。采用EJB可以使得开发商业应用系统变得、容易,应用系统可以在一个支持EJB的环境中开发,开发完之后部署在其它的环境中,...

    Java数据编程指南

    网络客户机上的数据显示 第12章 Web体系结构 引言 典型的Web中心体系结构 应用程序体系结构 Web中心应用程序的判定标准 小结 第13章 服务程序(Servlets) 概述 服务程序的结构 服务...

    java面试题库2021.pdf

    ①MVC 模式与 Struts 体系 4、 mybatis 5、 MVC 框架 6、 各框架对比与项目优化 7、 JPA ①EJB 三、 Java web 开发核心内容 1、 web 编程基础 ①Tomcat 服务器NOWCODER.COM 牛客网——互联网学习求职必备神器 名企...

    java程序设计与开发课件

    1.3 Java的体系结构····························· (3) 1.3.1 Java的体系结构···························· (3) 1.3.2 Java虚拟机···········...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part5

    第1章 网络系统的需求分析 1 1.1 应用需求分析 1 1.1.1 应用需求调研 1 1.1.2 网络应用的分析 3 1.2 现有网络系统分析 4 1.2.1 现有网络系统结构调研 4 1.2.2 现有网络体系结构分析 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part2

    第1章 网络系统的需求分析 1 1.1 应用需求分析 1 1.1.1 应用需求调研 1 1.1.2 网络应用的分析 3 1.2 现有网络系统分析 4 1.2.1 现有网络系统结构调研 4 1.2.2 现有网络体系结构分析 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part6

    第1章 网络系统的需求分析 1 1.1 应用需求分析 1 1.1.1 应用需求调研 1 1.1.2 网络应用的分析 3 1.2 现有网络系统分析 4 1.2.1 现有网络系统结构调研 4 1.2.2 现有网络体系结构分析 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇

    第1章 网络系统的需求分析 1 1.1 应用需求分析 1 1.1.1 应用需求调研 1 1.1.2 网络应用的分析 3 1.2 现有网络系统分析 4 1.2.1 现有网络系统结构调研 4 1.2.2 现有网络体系结构分析 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part7

    第1章 网络系统的需求分析 1 1.1 应用需求分析 1 1.1.1 应用需求调研 1 1.1.2 网络应用的分析 3 1.2 现有网络系统分析 4 1.2.1 现有网络系统结构调研 4 1.2.2 现有网络体系结构分析 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part3

    第1章 网络系统的需求分析 1 1.1 应用需求分析 1 1.1.1 应用需求调研 1 1.1.2 网络应用的分析 3 1.2 现有网络系统分析 4 1.2.1 现有网络系统结构调研 4 1.2.2 现有网络体系结构分析 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part4

    第1章 网络系统的需求分析 1 1.1 应用需求分析 1 1.1.1 应用需求调研 1 1.1.2 网络应用的分析 3 1.2 现有网络系统分析 4 1.2.1 现有网络系统结构调研 4 1.2.2 现有网络体系结构分析 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     1.1 应用程序的分层体系结构  1.1.1 区分物理层和逻辑层  1.1.2 软件层的特征  1.1.3 软件分层的优点  1.1.4 软件分层的缺点  1.1.5 Java应用的持久化层  1.2 软件的模型  1.2.1 概念模型  1.2.2 关系数据...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     1.1 应用程序的分层体系结构  1.1.1 区分物理层和逻辑层  1.1.2 软件层的特征  1.1.3 软件分层的优点  1.1.4 软件分层的缺点  1.1.5 Java应用的持久化层  1.2 软件的模型  1.2.1 概念模型  1.2.2 关系数据...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     1.1 应用程序的分层体系结构  1.1.1 区分物理层和逻辑层  1.1.2 软件层的特征  1.1.3 软件分层的优点  1.1.4 软件分层的缺点  1.1.5 Java应用的持久化层  1.2 软件的模型  1.2.1 概念模型  1.2.2 关系数据...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     1.1 应用程序的分层体系结构  1.1.1 区分物理层和逻辑层  1.1.2 软件层的特征  1.1.3 软件分层的优点  1.1.4 软件分层的缺点  1.1.5 Java应用的持久化层  1.2 软件的模型  1.2.1 概念模型  1.2.2 关系数据...

Global site tag (gtag.js) - Google Analytics