Think In Java笔记

 

 

15.5 远程方法调用(RMI)

RMI用于远程调用Java对象

远程接口

RMI依赖远程接口来完成自己的工作

创建远程接口的时候,必须:

  • 接口和所有方法必须是public属性
  • 必须是java.rmi.Remote接口的扩展
  • 接口必须throws java.rmi.RemoteException
  • 作为参数和返回值的对象必须是远程接口,不能是具体类

远程接口的实施:

服务器必须包含UnicastRemoteObject类,并实现远程接口。必须为远程对象定义构造函数

保存RMI对象的时候,必须:

  • 创建和安装一个安全管理器,令其支持RMI。适用于RMI的是RMISecurityManager
  • 创建对象的一个或多个实例,使用PerfectTime对象创建
  • 向RMI远程对象注册表注册至少一个远程对象

 

 

15.6 COBRA

COBRA是OMG制定的RPC规范

COBRA基础:

OMG开发的“对象互动”规范称为“对象管理体系”(OMA),定义了两个组件:"核心对象模型"和"OMA引用体系"

  • “核心对象模型”:定义对象,接口,操作等
  • “OMA引用体系”:定义一个基础架构,实现对象的互动

OMA引用体系中包括:“对象请求代理”(ORB)、“COBRA”服务等一些工具

程序员可以通过ORB调用远程对象

COBRA接口定义语言(IDL):

COBRA的宗旨是“与语言无关”。IDL用于指定数据类型,属性,操作,接口或者其他许多东西。

最大的特点是“与语言无关”。IDL语法类似C++,Java

  • IDL: 模块  接口  方法
  • C++:命名空间 纯抽象类 成员函数
  • Java:封装  接口  方法

IDL支持继承,也用冒号运算符来表示。

首先IDL定义,然后由厂家提供的IDL/Java编译器生成Java代码

COBRA命名服务:

命名服务由OMA组件“命名服务”来实现

COBRA和RMI对比:

RMI是RFC的子集,在Java对象之间模拟部分RFC的功能,要调用非Java语言程序的时候,需要使用JNI或者J/Direct来实现调用

COBRA则已经做好了某种整合

 

 

15.7 EJB 企业Java Bean

企业级多层应用程序开发需要注意:

  • 性能
  • 扩展性
  • 安全性
  • 分布式事务
  • 复用性
  • 可靠性

EJB是专门用于解决企业级多层应用的

JavaBean和EJB的区别:

JavaBean一般是可复用组件

EJB因为要应用于多种平台,所以不能是AWT或Swing那样的图形化库

EJB规范:

EJB规范定义了服务器端的组建模型,定义了六种不同人物角色

  • EJB供应商:负责创建EJB组建,并且打包到一个特殊Jar文件中(ejb-jar)文件
  • 应用程序装配商:负责使用EJB组件创建出一定的应用程序
  • 展开/配置人:取得EJB组建,在运行环境中配置好
  • EJB容器/服务器提供商:提供一种时间运行环境和相关工具,用于配置,管理,运行EJB组件
  • 系统管理员;管理不同组件和服务,使其运行在正常状态

EJB组件:

  • “EJB容器”:运行时间环境,包含并运行着EJB组件
  • “EJB服务器”包含一个或多个EJB容器
  • JNDI(Java命名和目录接口):为EJB提供命名服务
  • JTA/JTS(Java事务API和Java事务服务):JTS实际上是COBRA OTS(对象事务服务)在Java中的实现
  • COBRA和RMI/IIOP:定义了如何同COBRA打交道,并且在IIOP协议顶部是实现RMI

EJB组件构成:

由一系列单元构成,包括bean本身,一些接口实现和一些信息

  1. EJB:本身是一个Java类
  2. 主接口:每个EJB都必须包含一个对应的HOME接口,作为EJB的代理在使用,方便客户查找和使用EJB
  3. 外部接口:将EJB展示给外界
  4. 配置描述符:一个XML文件,定义EJB主接口和远程接口名,定义JNDI中主接口的名字,定义EJB每个方法的事务属性,用于身份验证的访问控制
  5. ejb-jar:包含EJB,主接口和远程接口,以及配置描述符

EJB的类型:

包含两大类:会话bean和实体bean

会话bean:代表持久性数据采取的操作,而非数据本身。又分为“无状态”和“有状态”两类。所有会话都必须实javax.ejb.SessionBean

  •   无状态会话bean:EJB组件中最简单的类型,不保存会话状态
  •   有状态会话bean:保存会话状态,如果容器崩溃,有状态会话bean的数据会丢失

实体bean:表示持久性数据和该数据的行为,EJB容器负责对实体bean缓存。他的生存时间延续到了容器外,根据持久性由谁管理,分为“由容器管理的实体bean”和“由bean管理的实体bean”

“由容器管理的持久性”CMP:由容器管理实体bean,可以减少代码量

“由bean管理的持久性”BMP:需要新建EJB的逻辑实现,以及添加,删除,更新属性,查找EJB的逻辑,可能也需要编写恰当的JDBC代码

15.8 Jini:

Jini代表一系列的API和网络协议,可用于展开和构建分布式系统,方便“客户”利用平等的“服务联盟”使用服务

Jini怎么样工作:

Jini定义一个驻留网络的“运行时间架构”(Run-time Infrasture),用于添加,删除,寻找,访问系统上的服务

总共驻留在三个地方:网上的检索服务,服务提供者那里(与Jini兼容的设备),客户那里

其中网络检索服务(Lookup Service)是中心组织,用于新服务注册自己的"存在":,也可以用于查询网络上的服务

“运行时间架构”定义了一种在网络层的协议,名为discovery(发现),对象层定义了两种协议,名为join(加入)和lookup(查找)

  • "发现"用于客户和服务找到检索服务
  • "加入"用于注册服务
  • “查找”用于查询服务

 

 

你可能感兴趣的:(Think In Java笔记)