java.rmi.server

接口
异常
java.lang.Object
  继承者 java.rmi.server.RemoteObject
      继承者 java.rmi.server.RemoteServer
          继承者 java.rmi.server.UnicastRemoteObject
所有已实现的接口:
Serializable, Remote
直接已知子类:
ActivationGroup

public class UnicastRemoteObject
     
extends RemoteServer

用于导出带 JRMP 的远程对象和获得与该远程对象通信的 stub。

对于下面的构造方法和静态 exportObject 方法,正在导出的远程对象的 stub 按以下方式获得:

  • 如果使用 UnicastRemoteObject.exportObject(Remote) 方法导出该远程对象,则加载 stub 类(通常使用 rmic 工具从远程对象的类预生成)并按以下方式构造 stub 类的实例。
    • “根类”按以下情形确定:如果远程对象的类直接实现扩展 Remote 的接口,则远程对象的类为根类;否则,根类为直接实现扩展 Remote 接口的远程对象类的最具派生能力的超类。
    • 要加载的 stub 类的名称通过连接带有后缀 "_Stub" 的根类的二进制名称确定。
    • 按使用根类的类加载器的名称加载 stub 类。该 stub 类必须扩展 RemoteStub 并且必须有公共构造方法,该构造方法有一个属于类型 RemoteRef 的参数。
    • 最后,用 RemoteRef 构造 stub 类的实例。
  • 如果无法找到适当的 stub 类,或无法加载 stub 类,或创建 stub 实例时出现问题,则抛出 StubNotFoundException

  • 对于所有其他导出方式:

    • 如果无法加载远程对象的 stub 类(如上所述)或将系统属性 java.rmi.server.ignoreStubClasses 设置为 "true"(不分大小写),则用以下属性构造 Proxy 实例:

    • 否则,将远程对象的 stub 类(如上所述)的实例用作 stub。

从以下版本开始:
JDK1.1
另请参见:
序列化表格

字段摘要
 
从类 java.rmi.server.RemoteObject 继承的字段
ref
 
构造方法摘要
protected UnicastRemoteObject()
          使用匿名端口创建并导出一个新 UnicastRemoteObject 对象。
protected UnicastRemoteObject(int port)
          使用提供的特定端口创建并导出一个新 UnicastRemoteObject 对象。
protected UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          使用提供的特定端口和套接字工厂创建并导出一个新 UnicastRemoteObject 对象。
 
方法摘要
 Object clone()
          返回与初始对象不同的远程对象的副本。
static RemoteStub exportObject(Remote obj)
          使用匿名端口导出远程对象,以便能够接收传入的调用。
static Remote exportObject(Remote obj, int port)
          使用提供的特定端口导出远程对象,以便能够接收传入的调用。
static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          使用由给定的套接字工厂指定的传送方式导出远程对象,以便能够接收传入的调用。
static boolean unexportObject(Remote obj, boolean force)
          从 RMI 运行时移除远程对象 obj。
 
从类 java.rmi.server.RemoteServer 继承的方法
getClientHost, getLog, setLog
 
从类 java.rmi.server.RemoteObject 继承的方法
equals, getRef, hashCode, toString, toStub
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

UnicastRemoteObject

protected UnicastRemoteObject()
                       throws RemoteException
使用匿名端口创建并导出一个新 UnicastRemoteObject 对象。

抛出:
RemoteException - 如果导出对象失败
从以下版本开始:
JDK1.1

UnicastRemoteObject

protected UnicastRemoteObject(int port)
                       throws RemoteException
使用提供的特定端口创建并导出一个新 UnicastRemoteObject 对象。

参数:
port - 远程对象在其上接收调用的端口号(如果 port 为 0,则选择匿名端口)
抛出:
RemoteException - 如果导出对象失败
从以下版本开始:
1.2

UnicastRemoteObject

protected UnicastRemoteObject(int port,
                              RMIClientSocketFactory csf,
                              RMIServerSocketFactory ssf)
                       throws RemoteException
使用提供的特定端口和套接字工厂创建并导出一个新 UnicastRemoteObject 对象。

参数:
port - 远程对象在其上接收调用的端口号(如果 port 为 0,则选择匿名端口)
csf - 用于调用远程对象的客户端套接字工厂
ssf - 用于接收远程调用的服务器端套接字工厂
抛出:
RemoteException - 如果导出对象失败
从以下版本开始:
1.2
方法详细信息

clone

public Object clone()
             throws CloneNotSupportedException
返回与初始对象不同的远程对象的副本。

覆盖:
Object 中的 clone
返回:
新的远程对象
抛出:
CloneNotSupportedException - 如果因为 RemoteException 复制失败。
从以下版本开始:
JDK1.1
另请参见:
Cloneable

exportObject

public static RemoteStub exportObject(Remote obj)
                               throws RemoteException
使用匿名端口导出远程对象,以便能够接收传入的调用。

参数:
obj - 要导出的远程对象
返回:
远程对象的 stub
抛出:
RemoteException - 如果导出失败
从以下版本开始:
JDK1.1

exportObject

public static Remote exportObject(Remote obj,
                                  int port)
                           throws RemoteException
使用提供的特定端口导出远程对象,以便能够接收传入的调用。

参数:
obj - 要导出的远程对象
port - 要在其上导出对象的端口
返回:
远程对象的 stub
抛出:
RemoteException - 如果导出失败
从以下版本开始:
1.2

exportObject

public static Remote exportObject(Remote obj,
                                  int port,
                                  RMIClientSocketFactory csf,
                                  RMIServerSocketFactory ssf)
                           throws RemoteException
使用由给定的套接字工厂指定的传送方式导出远程对象,以便能够接收传入的调用。

参数:
obj - 要导出的远程对象
port - 在其上导出对象的端口
csf - 用于调用远程对象的客户端套接字工厂
ssf - 用于接收远程调用的服务器端套接字工厂
返回:
远程对象的 stub
抛出:
RemoteException - 如果导出失败
从以下版本开始:
1.2

unexportObject

public static boolean unexportObject(Remote obj,
                                     boolean force)
                              throws NoSuchObjectException
从 RMI 运行时移除远程对象 obj。如果成功,该对象可以不再接受传入的 RMI 调用。如果 force 参数为 true,则不会强行导出该对象,即使挂起远程对象的调用或远程对象仍在进行调用也一样。如果 force 参数为 false,则只有在未挂起且未调用对象的情况下才不会导出该对象。

参数:
obj - 将不导出的远程对象
force - 如果为 true,则即便挂起或正在进行调用也不导出对象;如果为 false,则只有在不挂起或未进行调用时才不导出对象
返回:
如果操作成功,则返回 true;否则返回 false
抛出:
NoSuchObjectException - 如果当前未导出远程对象
从以下版本开始:
1.2