所有类


javax.management.remote.rmi
接口 RMIConnection

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

public interface RMIConnection
   
   
   
   
   
extends Remote

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

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

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

有关类加载的内容在辅助文档 JMX Remote API 进行了详细的描述,它是对本文档的补充。本 Javadoc 规范所在的位置应包含它的 PDF 文档。

从以下版本开始:
1.5

方法摘要
 voidaddNotificationListener(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) 方法。
 voidclose()
          关闭此连接。
 ObjectInstancecreateMBean(String className, ObjectName name, MarshalledObject params, String[] signature, Subject delegationSubject)
          处理 MBeanServerConnection.createMBean(String, ObjectName, Object[], String[]) 方法。
 ObjectInstancecreateMBean(String className, ObjectName name, ObjectName loaderName, MarshalledObject params, String[] signature, Subject delegationSubject)
          处理 MBeanServerConnection.createMBean(String, ObjectName, ObjectName, Object[], String[]) 方法。
 ObjectInstancecreateMBean(String className, ObjectName name, ObjectName loaderName, Subject delegationSubject)
          处理 MBeanServerConnection.createMBean(String, ObjectName, ObjectName) 方法。
 ObjectInstancecreateMBean(String className, ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.createMBean(String, ObjectName) 方法。
 NotificationResultfetchNotifications(long clientSequenceNumber, int maxNotifications, long timeout)
          检索来自连接器服务器的通知。
 ObjectgetAttribute(ObjectName name, String attribute, Subject delegationSubject)
          处理 MBeanServerConnection.getAttribute(ObjectName, String) 方法。
 AttributeListgetAttributes(ObjectName name, String[] attributes, Subject delegationSubject)
          处理 MBeanServerConnection.getAttributes(ObjectName, String[]) 方法。
 StringgetConnectionId()
          返回连接 ID。
 StringgetDefaultDomain(Subject delegationSubject)
          处理 MBeanServerConnection.getDefaultDomain() 方法。
 String[]getDomains(Subject delegationSubject)
          处理 MBeanServerConnection.getDomains() 方法。
 IntegergetMBeanCount(Subject delegationSubject)
          处理 MBeanServerConnection.getMBeanCount() 方法。
 MBeanInfogetMBeanInfo(ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.getMBeanInfo(ObjectName) 方法。
 ObjectInstancegetObjectInstance(ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.getObjectInstance(ObjectName) 方法。
 Objectinvoke(ObjectName name, String operationName, MarshalledObject params, String[] signature, Subject delegationSubject)
          处理 MBeanServerConnection.invoke(ObjectName, String, Object[], String[]) 方法。
 booleanisInstanceOf(ObjectName name, String className, Subject delegationSubject)
          处理 MBeanServerConnection.isInstanceOf(ObjectName, String) 方法。
 booleanisRegistered(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) 方法。
 voidremoveNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject)
          处理 MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName, NotificationFilter, Object) 方法。
 voidremoveNotificationListener(ObjectName name, ObjectName listener, Subject delegationSubject)
          处理 MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName) 方法。
 voidremoveNotificationListeners(ObjectName name, Integer[] listenerIDs, Subject delegationSubject)
          处理 removeNotificationListener(ObjectName, NotificationListener)removeNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object) 方法。
 voidsetAttribute(ObjectName name, MarshalledObject attribute, Subject delegationSubject)
          处理 MBeanServerConnection.setAttribute(ObjectName, Attribute) 方法。
 AttributeListsetAttributes(ObjectName name, MarshalledObject attributes, Subject delegationSubject)
          处理 MBeanServerConnection.setAttributes(ObjectName, AttributeList) 方法。
 voidunregisterMBean(ObjectName name, Subject delegationSubject)
          处理 MBeanServerConnection.unregisterMBean(ObjectName) 方法。
 

方法详细信息

getConnectionId

String getConnectionId()
                       throws IOException

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

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

close

void close()
           throws IOException

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

抛出:
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 - 如果出现通用通信异常。