javax.management.remote.rmi

接口
所有超级接口:
Closeable, Remote
所有已知实现类:
RMIConnectionImpl, RMIConnectionImpl_Stub

public interface RMIConnection
     
extends Closeable, Remote

RMI 对象,用于将 MBeanServer 请求从客户端转发到其位于服务器端的 MBeanServer 实现。连接到 RMI 连接器的每个远程客户端都有一个实现此接口的 Remote 对象。

用户代码不经常引用此接口。它作为公用 API 的一部分指定,便于该 API 的不同实现之间实现互操作。

为确保用正确的类加载器将客户端参数在服务器端反序列化,客户端参数(例如,用于调用方法的参数)包装在 MarshalledObject 方法中。此接口的实现必须首先获得适用于操作及其目标的适当的类加载器,然后用该类加载器反序列化编组的参数。除非另外说明,MarshalledObjectMarshalledObject[] 类型的参数必定不为 null;如果参数为 null,则行为不明确。

有关类加载的内容在 MBeanServerConnection 接口中的方法相似。这里未指定方法的行为方面,它与相应的 MBeanServerConnection 方法相同。

从以下版本开始:
1.5

方法摘要
 void addNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject)
          处理 MBeanServerConnection.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object) 方法。
 Integer[] addNotificationListeners(ObjectName[] names, MarshalledObject[] filters, Subject[] delegationSubjects)
          处理 MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object) 方法。
 void close()
          关闭此连接。
 ObjectInstance createMBean(String className, ObjectName name, MarshalledObject params, String[] signature, Subject delegationSubject)
          处理 MBeanServerConnection.createMBean(String, ObjectName, Object[], String[]) 方法。
 ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, MarshalledObject params, String[] signature, Subject delegationSubject)
          处理 MBeanServerConnection.createMBean(String, ObjectName, ObjectName, Object[], String[]) 方法。
 ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, Subject delegationSubject)
          处理 MBeanServerConnection.createMBean(String, ObjectName, ObjectName) 方法。
 ObjectInstance createMBean(String className, ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.createMBean(String, ObjectName) 方法。
 NotificationResult fetchNotifications(long clientSequenceNumber, int maxNotifications, long timeout)
          检索来自连接器服务器的通知。
 Object getAttribute(ObjectName name, String attribute, Subject delegationSubject)
          处理 MBeanServerConnection.getAttribute(ObjectName, String) 方法。
 AttributeList getAttributes(ObjectName name, String[] attributes, Subject delegationSubject)
          处理 MBeanServerConnection.getAttributes(ObjectName, String[]) 方法。
 String getConnectionId()
          返回连接 ID。
 String getDefaultDomain(Subject delegationSubject)
          处理 MBeanServerConnection.getDefaultDomain() 方法。
 String[] getDomains(Subject delegationSubject)
          处理 MBeanServerConnection.getDomains() 方法。
 Integer getMBeanCount(Subject delegationSubject)
          处理 MBeanServerConnection.getMBeanCount() 方法。
 MBeanInfo getMBeanInfo(ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.getMBeanInfo(ObjectName) 方法。
 ObjectInstance getObjectInstance(ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.getObjectInstance(ObjectName) 方法。
 Object invoke(ObjectName name, String operationName, MarshalledObject params, String[] signature, Subject delegationSubject)
          处理 MBeanServerConnection.invoke(ObjectName, String, Object[], String[]) 方法。
 boolean isInstanceOf(ObjectName name, String className, Subject delegationSubject)
          处理 MBeanServerConnection.isInstanceOf(ObjectName, String) 方法。
 boolean isRegistered(ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.isRegistered(ObjectName) 方法。
 Set<ObjectInstance> queryMBeans(ObjectName name, MarshalledObject query, Subject delegationSubject)
          处理 MBeanServerConnection.queryMBeans(ObjectName, QueryExp) 方法。
 Set<ObjectName> queryNames(ObjectName name, MarshalledObject query, Subject delegationSubject)
          处理 MBeanServerConnection.queryNames(ObjectName, QueryExp) 方法。
 void removeNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject)
          处理 MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName, NotificationFilter, Object) 方法。
 void removeNotificationListener(ObjectName name, ObjectName listener, Subject delegationSubject)
          处理 MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName) 方法。
 void removeNotificationListeners(ObjectName name, Integer[] listenerIDs, Subject delegationSubject)
          处理 removeNotificationListener(ObjectName, NotificationListener)removeNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object) 方法。
 void setAttribute(ObjectName name, MarshalledObject attribute, Subject delegationSubject)
          处理 MBeanServerConnection.setAttribute(ObjectName, Attribute) 方法。
 AttributeList setAttributes(ObjectName name, MarshalledObject attributes, Subject delegationSubject)
          处理 MBeanServerConnection.setAttributes(ObjectName, AttributeList) 方法。
 void unregisterMBean(ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.unregisterMBean(ObjectName) 方法。
 

方法详细信息

getConnectionId

String getConnectionId()
                       throws IOException

返回连接 ID。对于每个到给定的 RMI 连接器服务器的开放连接,此字符串都不相同。

返回:
连接 ID
抛出:
IOException - 如果出现通用通信异常。
另请参见:
RMIConnector.connect

close

void close()
           throws IOException

关闭此连接。从此方法返回时,不导出实现此接口的 RMI 对象,因此对它的进一步远程调用将失败。

指定者:
接口 Closeable 中的 close
抛出:
IOException - 如果无法关闭连接,或 Remote 对象无法被导出,或者在传输远程关闭请求时出现通信故障。

createMBean

ObjectInstance createMBean(String className,
                           ObjectName name,
                           Subject delegationSubject)
                           throws ReflectionException,
                                  InstanceAlreadyExistsException,
                                  MBeanRegistrationException,
                                  MBeanException,
                                  NotCompliantMBeanException,
                                  IOException
处理 MBeanServerConnection.createMBean(String, ObjectName) 方法。

参数:
className - 要实例化的 MBean 的类名称。
name - MBean 的对象名。可以为 null。
delegationSubject - 包含委托 principal 的 Subject,如果使用了验证 principal,则为 null
返回:
ObjectInstance,它包含新实例化的 MBean 的 ObjectName 和 Java 类名。如果所包含的 ObjectNamen,则所包含的 Java 类名为 getMBeanInfo(n).getClassName()
抛出:
ReflectionException - 在尝试调用 MBean 的构造方法的过程中出现的、包装了 java.lang.ClassNotFoundExceptionjava.lang.Exception 的异常。
InstanceAlreadyExistsException - MBean 已处于 MBean 服务器的控制之下。
MBeanRegistrationException - MBean 的 preRegisterMBeanRegistration 接口)方法已抛出异常。不对 MBean 进行注册。
MBeanException - MBean 的构造方法已抛出异常。
NotCompliantMBeanException - 该类不是一个遵守 JMX 的 MBean。
RuntimeOperationsException - 包装了 java.lang.IllegalArgumentException:className 传入的参数为 null, ObjectName 传入的参数包含模式或未为 MBean 指定任何 ObjectName
SecurityException - 如果客户端或委托的 Subject(如果有)没有执行此操作的权限。
IOException - 如果出现通用通信异常。

createMBean

ObjectInstance createMBean(String className,
                           ObjectName name,
                           ObjectName loaderName,
                           Subject delegationSubject)
                           throws ReflectionException,
                                  InstanceAlreadyExistsException,
                                  MBeanRegistrationException,
                                  MBeanException,
                                  NotCompliantMBeanException,
                                  InstanceNotFoundException,
                                  IOException
处理 MBeanServerConnection.createMBean(String, ObjectName, ObjectName) 方法。

参数:
className - 要实例化的 MBean 的类名称。
name - MBean 的对象名。可以为 null。
loaderName - 要使用的类加载器的对象名。
delegationSubject - 包含委托 principal 的 Subject,如果使用了验证 principal,则为 null
返回:
ObjectInstance,它包含新实例化的 MBean 的 ObjectName 和 Java 类名。如果所包含的 ObjectNamen,则所包含的 Java 类名为 getMBeanInfo(n).getClassName()
抛出:
ReflectionException - 在尝试调用 MBean 的构造方法的过程中出现的、包装了 java.lang.ClassNotFoundExceptionjava.lang.Exception 的异常。
InstanceAlreadyExistsException - MBean 已处于 MBean 服务器的控制之下。
MBeanRegistrationException - MBean 的 preRegisterMBeanRegistration 接口)方法已抛出异常。不对 MBean 进行注册。
MBeanException - MBean 的构造方法已抛出异常。
NotCompliantMBeanException - 该类不是一个遵守 JMX 的 MBean。
InstanceNotFoundException - 指定的类加载器未在 MBean 服务器中注册。
RuntimeOperationsException - 包装了 java.lang.IllegalArgumentException:className 传入的参数为 null, ObjectName 传入的参数包含模式或未为 MBean 指定任何 ObjectName
SecurityException - 如果客户端或委托的 Subject(如果有)没有执行此操作的权限。
IOException - 如果出现通用通信异常。

createMBean

ObjectInstance createMBean(String className,
                           ObjectName name,
                           MarshalledObject params,
                           String[] signature,
                           Subject delegationSubject)
                           throws ReflectionException,
                                  InstanceAlreadyExistsException,
                                  MBeanRegistrationException,
                                  MBeanException,
                                  NotCompliantMBeanException,
                                  IOException
处理 MBeanServerConnection.createMBean(String, ObjectName, Object[], String[]) 方法。 Object[] 参数包装在 MarshalledObject 中。

参数:
className - 要实例化的 MBean 的类名称。
name - MBean 的对象名。可以为 null。
params - 包含要调用的构造方法的参数的数组,数组封装在 MarshalledObject 中。封装的数组可以为 null,其等效于一个空数组。
signature - 包含要调用的构造方法的签名的数组。可以为 null,等效于一个空数组。
delegationSubject - 包含委托 principal 的 Subject,如果使用了验证 principal,则为 null
返回:
ObjectInstance,它包含新实例化的 MBean 的 ObjectName 和 Java 类名。如果所包含的 ObjectNamen,则所包含的 Java 类名为 getMBeanInfo(n).getClassName()
抛出:
ReflectionException - 在尝试调用 MBean 的构造方法的过程中出现的、包装了 java.lang.ClassNotFoundExceptionjava.lang.Exception 的异常。
InstanceAlreadyExistsException - MBean 已处于 MBean 服务器的控制之下。
MBeanRegistrationException - MBean 的 preRegisterMBeanRegistration 接口)方法已抛出异常。不对 MBean 进行注册。
MBeanException - MBean 的构造方法已抛出异常。
NotCompliantMBeanException - 该类不是一个遵守 JMX 的 MBean。
RuntimeOperationsException - 包装了 java.lang.IllegalArgumentException:className 传入的参数为 null, ObjectName 传入的参数包含一个模式,或未为 MBean 指定任何 ObjectName
SecurityException - 如果客户端或委托的 Subject(如果有)没有执行此操作的权限。
IOException - 如果出现通用通信异常。

createMBean

ObjectInstance createMBean(String className,
                           ObjectName name,
                           ObjectName loaderName,
                           MarshalledObject params,
                           String[] signature,
                           Subject delegationSubject)
                           throws ReflectionException,
                                  InstanceAlreadyExistsException,
                                  MBeanRegistrationException,
                                  MBeanException,
                                  NotCompliantMBeanException,
                                  InstanceNotFoundException,
                                  IOException
处理 MBeanServerConnection.createMBean(String, ObjectName, ObjectName, Object[], String[]) 方法。 Object[] 参数包装在 MarshalledObject 中。

参数:
className - 要实例化的 MBean 的类名称。
name - MBean 的对象名。可以为 null。
loaderName - 要使用的类加载器的对象名。
params - 包含要调用的构造方法的参数的数组,数组封装在 MarshalledObject 中。封装的数组可以为 null,其等效于一个空数组。
signature - 包含要调用的构造方法的签名的数组。可以为 null,等效于一个空数组。
delegationSubject - 包含委托 principal 的 Subject,如果使用了验证 principal,则为 null
返回:
ObjectInstance,它包含新实例化的 MBean 的 ObjectName 和 Java 类名。如果所包含的 ObjectNamen,则所包含的 Java 类名为 getMBeanInfo(n).getClassName()
抛出:
ReflectionException - 在尝试调用 MBean 的构造方法的过程中出现的、包装了 java.lang.ClassNotFoundExceptionjava.lang.Exception 的异常。
InstanceAlreadyExistsException - MBean 已处于 MBean 服务器的控制之下。
MBeanRegistrationException - MBean 的 preRegisterMBeanRegistration 接口)方法已抛出异常。不对 MBean 进行注册。
MBeanException - MBean 的构造方法已抛出异常。
NotCompliantMBeanException - 该类不是一个遵守 JMX 的 MBean。
InstanceNotFoundException - 指定的类加载器未在 MBean 服务器中注册。
RuntimeOperationsException - 包装了 java.lang.IllegalArgumentException:className 传入的参数为 null, ObjectName 传入的参数包含一个模式,或未为 MBean 指定任何 ObjectName
SecurityException - 如果客户端或委托的 Subject(如果有)没有执行此操作的权限。
IOException - 如果出现通用通信异常。

unregisterMBean

void unregisterMBean(ObjectName name,
                     Subject delegationSubject)
                     throws InstanceNotFoundException,
                            MBeanRegistrationException,
                            IOException
处理 MBeanServerConnection.unregisterMBean(ObjectName) 方法。

参数:
name - 要注册的 MBean 的对象名。
delegationSubject - 包含委托 principal 的 Subject,如果使用了验证 principal,则为 null
抛出:
InstanceNotFoundException - 指定的 MBean 未在 MBean 服务器中注册。
MBeanRegistrationException - MBean 的 preDeregister ( MBeanRegistration 接口)方法已抛出异常。
RuntimeOperationsException - 包装了 java.lang.IllegalArgumentException:参数中的对象名为 null 或您尝试注销的 MBean 为 MBeanServerDelegate MBean。
SecurityException - 如果客户端或委托的 Subject(如果有)没有执行此操作的权限。
IOException - 如果出现通用通信异常。

getObjectInstance

ObjectInstance getObjectInstance(ObjectName name,
                                 Subject delegationSubject)
                                 throws InstanceNotFoundException,
                                        IOException
处理 MBeanServerConnection.getObjectInstance(ObjectName) 方法。

参数:
name - MBean 的对象名。
delegationSubject - 包含委托 principal 的 Subject,如果使用了验证 principal,则为 null
返回:
name 指定的与 MBean 关联的 ObjectInstance。所包含的 ObjectNamename,所包含的类名称为 getMBeanInfo(name).getClassName()
抛出:
InstanceNotFoundException - 指定的 MBean 未在 MBean 服务器中注册。
RuntimeOperationsException - 包装了 java.lang.IllegalArgumentException:参数中的对象名为 null。
SecurityException - 如果客户端或委托的 Subject(如果有)没有执行此操作的权限。
IOException - 如果出现通用通信异常。

queryMBeans

Set<ObjectInstance> queryMBeans(ObjectName name,
                                MarshalledObject query,
                                Subject delegationSubject)
                                throws IOException
处理 MBeanServerConnection.queryMBeans(ObjectName, QueryExp) 方法。 QueryExp 包装在 MarshalledObject 中。

参数:
name - 标识要检索的 MBean 的对象名模式。如果指定了 null 或未指定任何域或关键字属性,则将检索所有已注册的 MBean。
query - 用于选择 MBean 的查询表达式,它封装在 MarshalledObject 中。如果 MarshalledObject 封装了一个 null 值,则选择 MBean 时不使用任何查询表达式。
delegationSubject - 包含委托 principal 的 Subject,如果使用了验证 principal,则为 null
返回:
包含选定 MBean 的 ObjectInstance 对象集。如果没有任何 MBean 满足此查询,则返回一个空列表。
抛出:
SecurityException - 如果客户端或委托的 Subject(如果有)没有执行此操作的权限。

JDK 1.6 中文手册