javax.rmi.CORBA

接口
java.lang.Object
  继承者 javax.rmi.CORBA.Util

public class Util
     
extends Object

提供可以由 stub 和 tie 用于执行公共操作的实用方法。


方法摘要
static Object copyObject(Object obj, ORB orb)
          复制或连接一个对象。
static Object[] copyObjects(Object[] obj, ORB orb)
          复制或连接一个对象数组。
static ValueHandler createValueHandler()
          返回实现 ValueHandler 接口的类的单一实例。
static String getCodebase(Class clz)
          返回给定类的代码基(如果存在)。
static Tie getTie(Remote target)
          返回给定目标对象的 tie(如果存在)。
static boolean isLocal(Stub stub)
          isLocal 方法与 ObjectImpl._is_local 方法具有相同的语义,否则可能抛出 RemoteException
static Class loadClass(String className, String remoteCodebase, ClassLoader loader)
          为指定的类返回一个类实例。
static RemoteException mapSystemException(SystemException ex)
          将 SystemException 映射到 RemoteException。
static Object readAny(InputStream in)
          将 java.lang.Object 作为 CORBA any 读取。
static void registerTarget(Tie tie, Remote target)
          为 tie 注册一个目标。
static void unexportObject(Remote target)
          从内部表中移除关联的 tie,并调用 Tie.deactivate() 以取消激活该对象。
static RemoteException wrapException(Throwable orig)
          包装由实现方法抛出的异常。
static void writeAbstractObject(OutputStream out, Object obj)
          将 java.lang.Object 作为一个值或 CORBA Object 写入。
static void writeAny(OutputStream out, Object obj)
          将 any java.lang.Object 作为 CORBA any 写入。
static void writeRemoteObject(OutputStream out, Object obj)
          将 java.lang.Object 作为 CORBA Object 写入。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

mapSystemException

public static RemoteException mapSystemException(SystemException ex)
将 SystemException 映射到 RemoteException。

参数:
ex - 要映射的 SystemException。
返回:
映射的异常。

writeAny

public static void writeAny(OutputStream out,
                            Object obj)
将 any java.lang.Object 作为 CORBA any 写入。

参数:
out - 要写入 any 的流。
obj - 要写入为 any 的对象。

readAny

public static Object readAny(InputStream in)
将 java.lang.Object 作为 CORBA any 读取。

参数:
in - 从中读取 any 的流。
返回:
从流读取的 Object。

writeRemoteObject

public static void writeRemoteObject(OutputStream out,
                                     Object obj)
将 java.lang.Object 作为 CORBA Object 写入。如果 obj 是导出的 RMI-IIOP 服务器对象,则查找 tie 并传递到 obj,然后写入 out.write_Object(org.omg.CORBA.Object)。如果 obj 是 CORBA Object,则将其写入到 out.write_Object(org.omg.CORBA.Object)

参数:
out - 要将 Object 写入的流。
obj - 要写入的对象。

writeAbstractObject

public static void writeAbstractObject(OutputStream out,
                                       Object obj)
将 java.lang.Object 作为一个值或 CORBA Object 写入。如果 obj 是一个值对象或者是一个 stub 对象,则将其写入到 out.write_abstract_interface(java.lang.Object)。如果 obj 是导出的 RMI-IIOP 服务器对象,则查找 tie 并传递到 obj,然后写入到 out.write_abstract_interface(java.lang.Object)

参数:
out - 要写入 Object 的流。
obj - 要写入的对象。

registerTarget

public static void registerTarget(Tie tie,
                                  Remote target)
为 tie 注册一个目标。将 tie 添加到内部表并对 tie 对象调用 Tie.setTarget(java.rmi.Remote)

参数:
tie - 要注册的 tie。
target - tie 的目标。

unexportObject

public static void unexportObject(Remote target)
                           throws NoSuchObjectException
从内部表中移除关联的 tie,并调用 Tie.deactivate() 以取消激活该对象。

参数:
target - 要撤消导出的对象。
抛出:
NoSuchObjectException

getTie

public static Tie getTie(Remote target)
返回给定目标对象的 tie(如果存在)。

返回:
tie,如果没有为给定目标注册 tie,则返回 null。

createValueHandler

public static ValueHandler createValueHandler()
返回实现 ValueHandler 接口的类的单一实例。

返回:
实现 ValueHandler 接口的类。

getCodebase

public static String getCodebase(Class clz)
返回给定类的代码基(如果存在)。

参数:
clz - 为其获取代码基的类。
返回:
URL 的空格分隔的列表,或者为 null。

loadClass

public static Class loadClass(String className,
                              String remoteCodebase,
                              ClassLoader loader)
                       throws ClassNotFoundException
为指定的类返回一个类实例。

此方法的规范是“Java 到 IDL 语言的映射关系”ptc/00-01-06。

在 Java SE 平台上,此方法的工作方式如下:

  • 在调用堆栈上查找第一个非 null 的 ClassLoader,并使用此 ClassLoader 尝试加载类。
  • 如果第一步失败,并且如果 remoteCodebase 为非 null,且 useCodebaseOnly 为 false,则调用 java.rmi.server.RMIClassLoader.loadClass(remoteCodebase, className)
  • 如果 remoteCodebase 为 null 或 useCodebaseOnly 为 true,则调用 java.rmi.server.RMIClassLoader.loadClass(className)
  • 如果通过步骤 1、2 或 3 没有成功加载类,并且 loader 为非 null,则调用 loader.loadClass(className)
  • 如果通过步骤 1、2、3 或 4 成功加载类,则返回加载的类,否则抛出 ClassNotFoundException

    参数:
    className - 类名。
    remoteCodebase - 可能从中发现类的空格分隔的 URL 列表。可以为 null。
    loader - 在所有其他方法失败时可以用来加载类的 ClassLoader
    返回:
    表示加载的类的 Class 对象。
    抛出:
    ClassNotFoundException - 如果不能加载类。

isLocal

public static boolean isLocal(Stub stub)
                       throws RemoteException
isLocal 方法与 ObjectImpl._is_local 方法具有相同的语义,否则可能抛出 RemoteException。 如果通过本地伺服器实现特定对象,并因此使用本地调用 API,则提供 _is_local() 方法以便能够确定 stub。

参数:
stub - 要测试的 stub。
返回:
如果具体化对象的伺服器与 stub 位于同一个进程,并且它们共享同一个 ORB 实例,则 _is_local() 方法返回 true。否则, _is_local() 方法返回 false。 _is_local() 的默认行为是返回 false。
抛出:
RemoteException - 如果 Java 到 IDL 的规范 没有指定导致抛出 RemoteException 的条件。

wrapException

public static RemoteException wrapException(Throwable orig)
包装由实现方法抛出的异常。它返回相应的客户端异常。

参数:
orig - 要包装的异常。
返回:
包装的异常。

copyObjects

public static Object[] copyObjects(Object[] obj,
                                   ORB orb)
                            throws RemoteException
复制或连接一个对象数组。由本地 stub 使用以复制任意数量的实际参数,根据需要保留共享的交叉参数以支持 RMI 语义。

参数:
obj - 要复制或连接的对象。
orb - 该 ORB。
返回:
复制或连接的对象。
抛出:
RemoteException - 如果不能复制或连接任何对象。

copyObject

public static Object copyObject(Object obj,
                                ORB orb)
                         throws RemoteException
复制或连接一个对象。由本地 stub 使用,以复制实际参数、结果对象或异常。

参数:
obj - 要复制的对象。
orb - 该 ORB。
返回:
复制或连接的对象。
抛出:
RemoteException - 如果不能复制或连接该对象。