JavaTM 2 Platform
Standard Ed. 5.0

类 java.rmi.RemoteException
的使用

使用 RemoteException 的软件包
java.rmi 提供 RMI 包。 
java.rmi.activation 为 RMI 对象激活提供支持。 
java.rmi.dgc 为 RMI 分布式垃圾回收提供了类和接口。 
java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 
java.rmi.server 提供支持服务器端 RMI 的类和接口。 
javax.activity 包含解组期间通过 ORB 机制抛出的与 Activity 服务有关的异常。 
javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到远程 MBean 服务器。 
javax.rmi 包含 RMI-IIOP 的用户 API。 
javax.rmi.CORBA 包含用于 RMI-IIOP 的可移植性 API。 
javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 
 

java.rmiRemoteException 的使用
 

java.rmiRemoteException 的子类
 class AccessException
          AccessExceptionjava.rmi.Naming 类(特别是 bindrebindunbind)的某些方法和 java.rmi.activation.ActivationSystem 接口的方法抛出,以指示调用方不允许执行该方法调用所请求的操作。
 class ConnectException
          如果拒绝远程主机对连接的远程方法调用,则抛出 ConnectException
 class ConnectIOException
          如果在连接到远程主机以便进行远程方法调用时发生 IOException,则抛出 ConnectIOException
 class MarshalException
          如果在编组远程调用标题、参数或远程方法调用的返回值时发生 java.io.IOException,则抛出 MarshalException
 class NoSuchObjectException
          如果试图调用远程虚拟机上已不存在的对象上的方法,则抛出 NoSuchObjectException
 class ServerError
          当在服务器上处理远程方法调用时(既可以是解编参数、执行远程方法本身时,也可以是编组返回值时),如果抛出 Error,则作为远程方法调用的结果,将抛出 ServerError
 class ServerException
          在服务器上处理远程方法调用(既可以在解编参数时,也可以是在执行远程方法本身时)时,如果抛出 RemoteException,则作为远程方法调用的结果,也会抛出 ServerException
 class ServerRuntimeException
          已过时。 无替换版本
 class StubNotFoundException
          如果在导入某个远程对象时无法找到该对象的有效 stub 类,则抛出 StubNotFoundException
 class UnexpectedException
          如果远程方法调用的客户机因为该调用而收到一个未经检查的异常(该异常不属于远程接口方法的 throws 语句中声明的经检查的异常类型),则抛出 UnexpectedException
 class UnknownHostException
          如果在创建到远程主机的连接以便进行远程方法调用时发生 java.net.UnknownHostException,则抛出 UnknownHostException
 class UnmarshalException
          在解组参数时或者如果发生以下任何情况导致远程方法调用,则抛出 UnmarshalException: 如果在解组调用标题时发生异常 如果返回值的协议无效 如果解组参数(在服务器端)或返回值(在客户机端)时发生 java.io.IOException
 

抛出 RemoteExceptionjava.rmi 中的方法
static void Naming.bind(String name, Remote obj)
          将指定 name 绑定到远程对象。
static String[] Naming.list(String name)
          返回在注册表中绑定的名称所组成的数组。
static Remote Naming.lookup(String name)
          返回与指定 name 关联的远程对象的引用(一个 stub)。
static void Naming.rebind(String name, Remote obj)
          将指定名称重新绑定到一个新的远程对象。
static void Naming.unbind(String name)
          销毁与远程对象关联的指定名称的绑定。
 

java.rmi.activationRemoteException 的使用
 

java.rmi.activationRemoteException 的子类
 class ActivateFailedException
          在一个对可激活对象的远程调用过程中,当激活失败时,此异常由 RMI 运行时抛出。
 

抛出 RemoteExceptionjava.rmi.activation 中的方法
 MarshalledObject Activator.activate(ActivationID id, boolean force)
          激活与激活标识符 id 关联的对象。
 Remote ActivationID.activate(boolean force)
          激活此 id 的对象。
 ActivationMonitor ActivationSystem.activeGroup(ActivationGroupID id, ActivationInstantiator group, long incarnation)
          通过回调来通知激活系统该组现在是活动的。
 void ActivationMonitor.activeObject(ActivationID id, MarshalledObject obj)
          通知某个对象现在是活动的。
protected  void ActivationGroup.activeObject(ActivationID id, MarshalledObject mobj)
          如果子类要进行对组监视器的 activeObject 回调,则此 protected 方法是必要的。
abstract  void ActivationGroup.activeObject(ActivationID id, Remote obj)
          当对象被导出时(通过 Activatable 对象的构造或者通过显式调用 Activatable.exportObject),组的 activeObject 方法被调用。
static Remote Activatable.exportObject(Remote obj, ActivationID id, int port)
          导出可激活远程对象到 RMI 运行时来使该对象能接收传入的调用。
static Remote Activatable.exportObject(Remote obj, ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          导出可激活远程对象到 RMI 运行时来使该对象能接收传入的调用。
static ActivationID Activatable.exportObject(Remote obj, String location, MarshalledObject data, boolean restart, int port)
          此 exportObject 方法可以通过一个未扩展 Activatable 类的“可激活”对象显式地调用,为两个目的 a) 注册对象的激活描述符,该描述符通过激活系统(因此该对象能被激活)从提供的 locationdata 构造,以及 b) 在指定端口上(如果 port=0,则选择匿名端口)导出远程对象 obj
static ActivationID Activatable.exportObject(Remote obj, String location, MarshalledObject data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          此 exportObject 方法可经通过一个未扩展 Activatable 类的“可激活”对象显式地调用,为两个目的 a)注册对象的激活描述符,该描述符通过激活系统(因此该对象能被激活)从提供的 locationdata 构造,以及 b) 在指定端口上(如果 port=0,则选择匿名端口)导出远程对象 obj
 ActivationDesc ActivationSystem.getActivationDesc(ActivationID id)
          为具有该激活标识符 id 的对象返回激活描述符。
 ActivationGroupDesc ActivationSystem.getActivationGroupDesc(ActivationGroupID id)
          为具有该激活组标识符 id 的组返回激活组描述符。
static boolean Activatable.inactive(ActivationID id)
          通知系统具有相应激活 id 的对象当前是不活动的。
protected  void ActivationGroup.inactiveGroup()
          如果子类要进行对组监视器的 inactiveGroup 回调,则此 protected 方法是必要的。
 void ActivationMonitor.inactiveGroup(ActivationGroupID id, long incarnation)
          通知该组现在是不活动的。
 void ActivationMonitor.inactiveObject(ActivationID id)
          当组中的一个对象成为不活动(取消激活)时,一个激活组调用其监视器的 inactiveObject 方法。
 boolean ActivationGroup.inactiveObject(ActivationID id)
          通过调用 Activatable.inactive 方法间接地调用组的 inactiveObject 方法。
 MarshalledObject ActivationInstantiator.newInstance(ActivationID id, ActivationDesc desc)
          激活程序调用一个初始化程序的 newInstance 方法,以便在该组中重建具有激活标识符 id 和描述符 desc 的对象。
 MarshalledObject ActivationGroup_Stub.newInstance(ActivationID id, ActivationDesc desc)
          ActivationGroup.newInstance 的 stub 方法。
static Remote Activatable.register(ActivationDesc desc)
          为可激活远程对象注册一个对象描述符,以便它可以按需激活。
 ActivationGroupID ActivationSystem.registerGroup(ActivationGroupDesc desc)
          注册激活组。
 ActivationID ActivationSystem.registerObject(ActivationDesc desc)
          registerObject 方法用于注册一个激活描述符 desc,并且为可激活的远程对象获取一个激活标识符。
 ActivationDesc ActivationSystem.setActivationDesc(ActivationID id, ActivationDesc desc)
          为具有激活标识符 id 的对象设置激活描述符 desc
 ActivationGroupDesc ActivationSystem.setActivationGroupDesc(ActivationGroupID id, ActivationGroupDesc desc)
          为具有激活组标识符 id 的对象设置激活组描述符 desc
 void ActivationSystem.shutdown()
          关闭此激活系统。
static void Activatable.unregister(ActivationID id)
          为与 id 关联的激活描述符撤消前面的注册。
 void ActivationSystem.unregisterGroup(ActivationGroupID id)
          移除激活组。
 void ActivationSystem.unregisterObject(ActivationID id)
          移除前面通过 ActivationSystem 注册的激活 id 和描述符;该对象无法再通过对象的激活 id 被激活。
 

抛出 RemoteExceptionjava.rmi.activation 中的构造方法
Activatable(ActivationID id, int port)
          构造方法用于在指定端口上激活/导出对象。
Activatable(ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          构造方法用于在指定端口上激活/导出对象。
Activatable(String location, MarshalledObject data, boolean restart, int port)
          构造方法用于注册和在指定端口(如果 port=0,则选择匿名端口)上导出对象。
Activatable(String location, MarshalledObject data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          构造方法用于注册对象和在指定端口(如果 port=0,则选择匿名端口)上导出对象。
ActivationGroup(ActivationGroupID groupID)
          用给定的激活组标识符创建一个激活组。
 

java.rmi.dgcRemoteException 的使用
 

抛出 RemoteExceptionjava.rmi.dgc 中的方法
 void DGC.clean(ObjID[] ids, long sequenceNum, VMID vmid, boolean strong)
          洁调用从 'ids' 指示的每个远程对象的引用列表中移除 'vmid'。
 Lease DGC.dirty(ObjID[] ids, long sequenceNum, Lease lease)
          脏调用为(与包含在数组 'ids' 中的对象标识符关联的)远程对象引用请求租借。
 

java.rmi.registryRemoteException 的使用
 

抛出 RemoteExceptionjava.rmi.registry 中的方法
 void Registry.bind(String name, Remote obj)
          绑定对此注册表中指定 name 的远程引用。
static Registry LocateRegistry.createRegistry(int port)
          创建并导出接受指定 port 请求的本地主机上的 Registry 实例。
static Registry LocateRegistry.createRegistry(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          在本地主机上创建并导出 Registry 实例,该本地主机使用的是与该实例通信的自定义套接字工厂。
static Registry LocateRegistry.getRegistry()
          返回本地主机在默认注册表端口 1099 上对远程对象 Registry 的引用。
static Registry LocateRegistry.getRegistry(int port)
          返回本地主机在指定 port 上对远程对象 Registry 的引用。
static Registry LocateRegistry.getRegistry(String host)
          返回指定 host 在默认注册表端口 1099 上对远程对象 Registry 的引用。
static Registry LocateRegistry.getRegistry(String host, int port)
          返回指定的 hostport 上对远程对象 Registry 的引用。
static Registry LocateRegistry.getRegistry(String host, int port, RMIClientSocketFactory csf)
          返回本地创建的指定 hostport 上对远程对象 Registry 的远程引用。
 String[] Registry.list()
          返回在此注册表中绑定的名称的数组。
 Remote Registry.lookup(String name)
          返回注册表中绑定到指定 name 的远程引用。
 void Registry.rebind(String name, Remote obj)
          用提供的远程引用替换此注册表中指定的 name 绑定。
 Registry RegistryHandler.registryImpl(int port)
          已过时。 无替代版本。从 Java 2 平台 1.2 版本开始,RMI 不再使用 RegistryHandler 获取注册表的实现。
 Registry RegistryHandler.registryStub(String host, int port)
          已过时。 无替代版本。从 Java 2 平台 1.2 版本开始,RMI 不再使用 RegistryHandler 获取注册表的 stub。
 void Registry.unbind(String name)
          移除此注册表中指定的 name 绑定。
 

java.rmi.serverRemoteException 的使用
 

java.rmi.serverRemoteException 的子类
 class ExportException
          ExportException 是在尝试导出远程对象失败时抛出的 RemoteException
 class SkeletonMismatchException
          已过时。 无替代版本。在 Java 2 平台 1.2 版及更高版本中,远程方法调用不再需要 Skeleton。
 class SkeletonNotFoundException
          已过时。 无替代版本在 Java 2 平台 1.2 版及更高版本中,远程方法调用不再需要 Skeleton。
 class SocketSecurityException
          已废弃的 ExportException 的子类。
 

抛出 RemoteExceptionjava.rmi.server 中的方法
 void RemoteRef.done(RemoteCall call)
          已过时。 1.2 样式 stub 不再使用此方法。stub 使用远程引用上的单个方法 invoke(Remote, Method, Object[], int) 来执行参数编组、远程方法执行和返回值解组,而不是使用对远程引用(newCallinvokedone)的方法调用序列。
static RemoteStub UnicastRemoteObject.exportObject(Remote obj)
          使用匿名端口导出远程对象,以便能够接收传入的调用。
static Remote UnicastRemoteObject.exportObject(Remote obj, int port)
          使用提供的特定端口导出远程对象,以便能够接收传入的调用。
static Remote UnicastRemoteObject.exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          使用由给定的套接字工厂指定的传送方式导出远程对象,以便能够接收传入的调用。
 RemoteStub ServerRef.exportObject(Remote obj, Object data)
          为提供的 Remote 对象创建客户机 stub 对象。
 RemoteCall RemoteRef.newCall(RemoteObject obj, Operation[] op, int opnum, long hash)
          已过时。 1.2 样式 stub 不再使用此方法。stub 使用远程引用上的单个方法 invoke(Remote, Method, Object[], int) 来执行参数编组、远程方法执行和返回值的解组,而不是使用该 stub 的远程引用(newCallinvokedone)上的方法调用序列。
 

抛出 RemoteExceptionjava.rmi.server 中的构造方法
UnicastRemoteObject()
          使用匿名端口创建并导出一个新 UnicastRemoteObject 对象。
UnicastRemoteObject(int port)
          使用提供的特定端口创建并导出一个新 UnicastRemoteObject 对象。
UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          使用提供的特定端口和套接字工厂创建并导出一个新 UnicastRemoteObject 对象。
 

javax.activityRemoteException 的使用
 

javax.activityRemoteException 的子类
 class ActivityCompletedException
          任何访问 Activity 上下文的方法都可能抛出此异常,它指示不能继续在 Activity 内部执行操作。
 class ActivityRequiredException
          如果方法没有接收到它所要求的 Activity 上下文,则容器将抛出此异常。
 class InvalidActivityException
          任何访问 Activity 上下文的方法都可能抛出此异常,它指示尝试调用或与尝试调用相关的 Activity 上下文与 Activity 的当前状态不兼容。
 

javax.management.remote.rmiRemoteException 的使用
 

抛出 RemoteExceptionjavax.management.remote.rmi 中的方法
 String RMIServerImpl_Stub.getVersion()
           
 String RMIServer.getVersion()
          此连接器服务器能识别的 RMI 连接协议版本。
 

javax.rmiRemoteException 的使用
 

抛出 RemoteExceptionjavax.rmi 中的方法
static void PortableRemoteObject.connect(Remote target, Remote source)
          使 Remote 对象准备好进行远程通信。
static void PortableRemoteObject.exportObject(Remote obj)
          准备服务器对象,以接收远程调用。
 

抛出 RemoteExceptionjavax.rmi 中的构造方法
PortableRemoteObject()
          通过调用 exportObject(this) 初始化该对象。
 

javax.rmi.CORBARemoteException 的使用
 

返回 RemoteExceptionjavax.rmi.CORBA 中的方法
 RemoteException UtilDelegate.mapSystemException(SystemException ex)
          Util.mapSystemException(org.omg.CORBA.SystemException) 的委托调用。
static RemoteException Util.mapSystemException(SystemException ex)
          将 SystemException 映射到 RemoteException。
 RemoteException UtilDelegate.wrapException(Throwable obj)
          Util.wrapException(java.lang.Throwable) 的委托调用。
static RemoteException Util.wrapException(Throwable orig)
          包装由实现方法抛出的异常。
 

抛出 RemoteExceptionjavax.rmi.CORBA 中的方法
 void Stub.connect(ORB orb)
          将此 stub 连接到 ORB。
 void PortableRemoteObjectDelegate.connect(Remote target, Remote source)
          PortableRemoteObject.connect(java.rmi.Remote, java.rmi.Remote) 的委托调用。
 void StubDelegate.connect(Stub self, ORB orb)
          Stub.connect(org.omg.CORBA.ORB) 的委托调用。
 Object UtilDelegate.copyObject(Object obj, ORB orb)
          Util.copyObject(java.lang.Object, org.omg.CORBA.ORB) 的委托调用。
static Object Util.copyObject(Object obj, ORB orb)
          复制或连接一个对象。
 Object[] UtilDelegate.copyObjects(Object[] obj, ORB orb)
          Util.copyObjects(java.lang.Object[], org.omg.CORBA.ORB) 的委托调用。
static Object[] Util.copyObjects(Object[] obj, ORB orb)
          复制或连接一个对象数组。
 void PortableRemoteObjectDelegate.exportObject(Remote obj)
          PortableRemoteObject.exportObject(java.rmi.Remote) 的委托调用。
 boolean UtilDelegate.isLocal(Stub stub)
          Util.isLocal(javax.rmi.CORBA.Stub) 的委托调用。
static boolean Util.isLocal(Stub stub)
          isLocal 方法与 ObjectImpl._is_local 方法具有相同的语义,否则可能抛出 RemoteException
 

javax.transactionRemoteException 的使用
 

javax.transactionRemoteException 的子类
 class InvalidTransactionException
          此异常指示该请求带来了无效的事务上下文。
 class TransactionRequiredException
          此异常指示某个请求带来了 null 事务上下文,但目标对象需要激活的事务。
 class TransactionRolledbackException
          此异常指示与请求处理关联的事务已回滚,或已标记为回滚。
 


JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策