教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 求职职场 >

Java 分布式处理技术(2)

来源:网络收集 时间:2026-04-29
导读: Public static Registry getRegistry(String host, int port ,RMIClientSocketFactory csf ) throws RemoteException Public static Registry createRegistry(int port )throws RemoteException Public static Regi

Public static Registry getRegistry(String host, int

port ,RMIClientSocketFactory csf ) throws RemoteException Public static Registry createRegistry(int port )throws

RemoteException

Public static Registry createRegistry(int port,

RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException

5、 Java.rmi.Naming 类

Naming 类提供了存储和获得远程对象注册服务程序中的远程对象进行引用的方法

Naming 类中的方法以 url 的形式作为其中的一个参

数, //host:port/name

当远程对象使用 rmi 注册服务程序在本地主机上进行过注册后,远程

主机上的调用程序就可以按名称查询远程对象,获得其引用,然后在对象上调用远程方法。

Public static Remote lookup(String name) throws NotBoundException, MalformedURException, RemoteException

Public static void bind(String name, Remote obj) throws

AlreadyBoundException, MalforedURException, RemoteException

Java 分布式处理技术

Public static void unbind (String name) throws RemoteException, NotBoundException,MalformedURLException

Public static void rebind(String name, Remote obj) throws RemoteException, MalformedURLException

6、 Java.rmi.server.UnicastRemoteObject 类

类 UnicastRemoteObject 创建并导出远程对象,该类实现的远程服务具有以下特点:

将这种对象的引用至多仅在创建该远程对象的进程生命周期内有效。 通过 TCP 传输与远程对象通信调用,参数和结果使用流协议在客户端

和服务器之间进行通信。

7、 Stub 和 skeleton

在远程对象的通信过程中, rmi 使用标准机制: stub 和 skeleton

图 14.5 Stub 和 Skeleton

Stub 的功能

初始化与包含远程对象的远程机器的连接。

对远程机器参数进行编组(写入并传输)。

等待方法调用结果。

读取返回值或返回的异常。

将值返回给调用程序。

Skeleton 的功能

Java 分布式处理技术

在远程机器中,每个远程对象都可以有相应的 skeleton , skeleton 负责将调用分配给实际的远程对象实现,他的主要功能如下:

读取远程方法的参数。

调用实际远程对象实现上的方法。

将结果(返回值或异常)编组(写入并传输)给调用程序。

1.4 JNDI 基本概念

JNDI 诞生的理由似乎很简单。随着分布式应用的发展,远程访问对象访问成为常用的方法。虽然说通过 Socket 等编程手段仍然可实现远程通信,但按照模式的理论来说,仍是有其局限性的。 RMI 技术, RMI-IIOP 技术的产生,使远程对象的查找成为了技术焦点。 JNDI 技术就应运而生。 JNDI 技术产生后,就可方便的查找远程或是本地对象。

1、 JNDI 是什么 ?

JNDI(The Java Naming and Directory Interface , Java 命名和目录接口 ) 是一组在 Java 应用中访问命名和目录服务的 API 。为开发人员提供了查找和访问各种命名和目录服务的通用、统一的方式。借助于 JNDI 提供的接口,能够通过名字定位用户、机器、网络、对象服务等。

命名服务:就像 DNS 一样,通过命名服务器提供服务,大部分

的 J2EE 服务器都含有命名服务器。

目录服务:一种简化的 RDBMS 系统,通过目录具有的属性保存一些简

单的信息。目录服务通过目录服务器实现,比如微软 ACTIVE

DIRECTORY 等。

2、 JNDI 的好处 :

包含大量命名和目录服务,可以使用相同 API 调用访问任何命名或目

录服务。

可以同时连接多个命名和目录服务。

允许把名称同 JAVA 对象或资源关联起来,不必知道对象或资源的物

理 ID 。

使用通用接口访问不同种类的目录服务

使得开发人员能够集中使用和实现一种类型的命名或目录服务客

户 API 上。

Java 分布式处理技术

1.5 JNDI 应用程序结构

JNDI 的结构由一个 API 和一个 SPI 组成, Java 应用程序实用 JNDI API 访问各种各样的命名和目录服务。

图 14.6 JNDI 应用程序结构

1、 JNDI 上下文

前面提到命名服务是将名称与对象相关联。这种关联被称为绑定。一组这样的绑定被称为上下文, Jndi 上下文可以用来查找,捆绑 / 解除捆绑,创建或者破坏绑定名称操作在 JNDI 中,上下文是使

用 javax.naming.Context 接口来表示的,而这个接口也正是与命名服务进行交互的主要接口。

Context 接口中的每个命名方法都有两种重载的形式:

lookup(String name): 接受一个字符串名称参数,查找绑定远程对象。 lookup(): 接受一个结构化的名称,查找绑定远程对象。

2、 初始化上下文

InitialContext 是一个实现了 Context 接口的类。使用这个类作为您到命名服务的入口点 。创建一个 InitialContext 对象构造器需要采用一组属性,形式为 java.util.Hashtable 或其子类之一,比如: 代码范例 5

Java 分布式处理技术

要通过 JNDI 进行资源访问,我们必须设置初始化上下文的参数,主要是设置 JNDI 驱动的类名 (java.naming.factory.initial) 和提供命名服务的 URL(java.naming.provider.url) 。因为 Jndi 的实现产品有很多。所以 java.naming.factory.initial 的值因提供 JNDI 服务器的不同而不同, java.naming.provider.url 的值包括提供命名服务的主机地址和端口号。

下表列出了用于所支持的服务提供程序的工厂类。

表 : Context.INITIAL_CONTEXT_FACTORY 的值

1.6 RMI 与 JNDI 集成

通过上面对 JNDI 的了解我们可以利用 JNDI 来管理 RMI 远程对象的注册服务,我们将代码范例 3 进行如下改写:

代码范例 6

Java 分布式处理技术

启动服务端程序如图所示:

Java 分布式处理技术

图 14.7 JNDI 服务程序启动

表示服务端程序已经将远程对象在 JNDI 是进行了注册,等待客户端进行调用。

接下来我们改写客户端程序采用 JNDI 方式来调用远程对象

代码范例 7

Java 分布式处理技术

运行客户端程序如图所示:

图 14.8 客户端 JNDI 程序运行结果

表示客户端已经通过 JNDI 调用服务端远程对象成功。

1.7 学习总结

RMI 运行在一个 java 虚拟机上的对象调用运行在另一个 java 虚拟

机上的对象的方法 . 。 RMI 的用途就是为 java 程序之间的远程通信提供服务。

RMI 的编程思想

对客户端:需要一些特定的代码来引用远程对象,一旦客户端的代

码拥有对远程对象的引用,对远程对象上的调用与对本地对象方法的调用除了速度以外没什么区别。

对服务端:必须定义类并实例化类的远程对象,服务器的代码必须

能够登记对象并向客户端导出它们的方法,这样,这些方法就能够被远程调用了。

客户端和服务端的代码都必须定义或能够访问一 …… 此处隐藏:2080字,全部文档内容请下载后查看。喜欢就下载吧 ……

Java 分布式处理技术(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/119874.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)