首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

RMI轨范-第五章

2012-12-20 
RMI规范--第五章服务器接口 java.rmi.server 包包含通常用于实现远程对象的接口与类。 主题: RemoteObject

RMI规范--第五章
服务器接口

java.rmi.server 包包含通常用于实现远程对象的接口与类。

主题:

RemoteObject 类

RemoteServer 类

UnicastRemoteObject 类

Unreferenced 接口

RMISecurityManager 类

RMIClassLoader 类

LoaderHandler 接口

RMI 套接字工厂

RMIFailureHandler 接口

LogStream 类

stub 和 skeleton 编译器

5.1 RemoteObject 类

类 java.rmi.server.RemoteObject 将 java.lang.Object 行为实现于远程对象。实现方法 hashCode 和 equals 将允许将远程对象引用存储在散列表中进行比较。

如果两个 Remote 对象引用同一个远程对象,则方法 equals 的返回值为 true。它负责比较远程对象的远程对象引用。

方法 toString 返回一个说明远程对象的字符串。该字符串的内容和语法与实现有关且可变。

java.lang.Object 中的其它方法保留了它们的原始实现。



如果远程对象是由老的构造函数或 UnicastRemoteObject 中没有将自定义套接字工厂作为参数的方法导出,则和以前一样拥有 UnicastRef 和UnicastServerRef 类型的 RemoteRef 和 ServerRef,并且其端点也将使用老式线表示,即一个 UTF 格式的主机字符串跟一个指定端口号的整数。

这样那些不使用 JDK 1.2 新特性的 RMI 服务器可以与老式 RMI 客户机进行互操作。

5.8.1 RMISocketFactory 类

java.rmi.server.RMISocketFactory 抽象类提供一个接口来指定传输中如何获得套接字。注意,下面的类使用 java.net 包中的 Socket 和 ServerSocket。

package java.rmi.server; public class LogStream extends java.io.PrintStream { public static LogStream log(String name); public static synchronized PrintStream getDefaultStream(); public static synchronized void setDefaultStream( PrintStream newDefault); public synchronized OutputStream getOutputStream(); public synchronized void setOutputStream(OutputStream out); public void write(int b); public void write(byte b[], int off, int len); public String toString(); public static int parseLevel(String s); // 日志等级常数 public static final int SILENT = 0; public static final int BRIEF = 10; public static final int VERBOSE = 20; } 

----------------------------------
----------
注意 -JDK1.2 中不鼓励使用 LogStream 类
----------------------------------
----------
方法 log 返回由给定名称标识的 LogStream。如果某名称所对应的日志不存在,即创建一个使用缺省流的日志。

方法 getDefaultStream 返回用于新日志的当前缺省流。

方法 setDefaultStream 为新日志设置缺省流。

方法 getOutputStream 返回当前日志输出到的流。

方法 setOutputStream 设置日志的输出流。

方法 write 的第一种形式将向该流写一个字节数据。如果不是新起一行,则将把

该字节添加到内部缓冲区。如果是新起一行,则当前缓冲区中的行将按相应的日志前缀发送到日志的输出流中。方法 write 的第二种形式将写字节子数组。

方法 toString 以字符串形式返回日志名。

方法 parseLevel 将日志等级的字符串名转换为内部整型表示。


5.11 stub 和 skeleton 编译器

rmic 的 stub 和 skeleton 编译器用于为特定的远程对象实现编译相应的 stub和 skeleton。该编译器将由远程对象类的类全名调用。

该类必须在先前已成功编译过。

导入类的位置由环境变量 CLASSPATH 或参数 -classpath 指定。

除非指定参数 -d,否则编译好的类文件将放在当前目录下。

参数 -keepgenerated (或 -keep)为 stub 和 skeleton 保留生成的 java 源文件。

也可指定 stub 协议的版本:

- -v1.1 创建符合 JDK 1.1 stub 协议版本的 stub/skeleton

- -vcompat(JDK 1.2 中为缺省值)创建同时兼容 JDK 1.1 和 1.2 stub 协议版本的 stub/skeleton

- -v1.2 创建仅符合 JDK 1.2 stub 协议版本的 stub(注意,JDK 1.2 stub协议中并不需要 skeleton)


-show 选项为程序显示一个图形用户界面。

大多数 javac 命令行参数均可用(-O 除外)且可与 rmic 一起使用:

- -g 生成调试信息

- -depend 反复编译过期文件

- -nowarn 不生成警告信息

- -verbose 输出有关编译器所执行的操作的消息

- -classpath 指定查找输入源及类文件的位置

- -d 指定放置生成类文件的位置

- -J< runtime flag> 将参数传给 java 解释器  

热点排行