public class RMIConnectionImpl extends Object implements RMIConnection, Unreferenced
RMIConnection
接口的实现。用户代码通常不会引用这个类。
Constructor and Description |
---|
RMIConnectionImpl(RMIServerImpl rmiServer, String connectionId, ClassLoader defaultClassLoader, Subject subject, Map<String,?> env)
构建了一种新的
RMIConnection 。
|
public RMIConnectionImpl(RMIServerImpl rmiServer, String connectionId, ClassLoader defaultClassLoader, Subject subject, Map<String,?> env)
RMIConnection
。这种连接既可采用JRMP或IIOP运输。该对象不出口本身:它是调用者的责任,出口适当(见
RMIJRMPServerImpl.makeClient(String,Subject)
和
RMIIIOPServerImpl.makeClient(String,Subject)
。
rmiServer
- rmiserverimpl对象创建此连接。如果此参数为空,则该行为是未指定的。
connectionId
-此连接的ID。如果此参数为空,则该行为是未指定的。
defaultClassLoader
-时要使用默认的类加载器对象反序列化整理。可以为空,以显示引导类加载程序。
subject
-认证主体进行授权。可以为空,以表示没有被验证的主题。
env
含有新的
RMIServerImpl
属性的环境。可以为零,相当于一个空的Map。
public String getConnectionId() throws IOException
RMIConnection
返回字符串连接ID。这是每一个打开的连接到一个给定的RMI连接器服务器不同。
getConnectionId
接口
RMIConnection
IOException
如果发生一般通信异常。
RMIConnector.connect
public void close() throws IOException
RMIConnection
关闭此连接。从这个方法返回,RMI对象实现该接口导出,因此进一步的远程调用会失败。
close
接口
Closeable
close
接口
AutoCloseable
close
接口
RMIConnection
IOException
如果连接无法关闭,或远程对象不能被导出,或有一个沟通失败时发送远程关闭请求。
public void unreferenced()
Unreferenced
unreferenced
接口
Unreferenced
public ObjectInstance createMBean(String className, ObjectName name, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, IOException
RMIConnection
createMBean
接口
RMIConnection
className
- MBean类名称被实例化。
name
- MBean对象名称。可能是空的。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
ObjectInstance
,含有
ObjectName
和新实例化MBean的java类的名称。如果有
ObjectName
是
n
,包含java类的名字是
getMBeanInfo(n)
.getClassName()
。
ReflectionException
-包装
java.lang.ClassNotFoundException
或
java.lang.Exception
时试图调用MBean的构造函数。
InstanceAlreadyExistsException
的MBean已经是MBean服务器的控制下。
MBeanRegistrationException
-
preRegister
(
MBeanRegistration
接口)的MBean方法抛出异常。MBean将不予注册。
MBeanException
- MBean构造函数抛出了一个异常。
NotCompliantMBeanException
这类不符合JMX MBean。
IOException
如果发生一般通信异常。
public ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException, IOException
RMIConnection
createMBean
接口
RMIConnection
className
- MBean类名称被实例化。
name
- MBean对象名称。可能是空的。
loaderName
-类加载器对象的名字被使用。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
ObjectInstance
,含有
ObjectName
和新实例化MBean的java类的名称。如果有
ObjectName
是
n
,包含java类的名字是
getMBeanInfo(n)
.getClassName()
。
ReflectionException
-包装
java.lang.ClassNotFoundException
或
java.lang.Exception
时试图调用MBean的构造函数。
InstanceAlreadyExistsException
的MBean已经是MBean服务器的控制下。
MBeanRegistrationException
-
preRegister
(
MBeanRegistration
接口)的MBean方法抛出异常。MBean将不予注册。
MBeanException
- MBean构造函数抛出了一个异常。
NotCompliantMBeanException
这类不符合JMX MBean。
InstanceNotFoundException
-指定的类装载器是不是在MBean服务器注册。
IOException
如果发生一般通信异常。
public ObjectInstance createMBean(String className, ObjectName name, MarshalledObject params, String[] signature, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, IOException
RMIConnection
MBeanServerConnection.createMBean(String, ObjectName, Object[], String[])
。的
Object[]
参数是包裹在一个
MarshalledObject
。
createMBean
接口
RMIConnection
className
- MBean类名称被实例化。
name
- MBean对象名称。可能是空的。
params
-一个数组包含构造函数的参数被调用,封装成一个
MarshalledObject
。封装的数组可以是空的,相当于一个空数组。
signature
-数组包含要调用构造函数的签名。可以是空的,相当于一个空数组。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
ObjectInstance
,含有
ObjectName
和新实例化MBean的java类的名称。如果有
ObjectName
是
n
,包含java类的名字是
getMBeanInfo(n)
.getClassName()
。
ReflectionException
-包装
java.lang.ClassNotFoundException
或
java.lang.Exception
时试图调用MBean的构造函数。
InstanceAlreadyExistsException
的MBean已经是MBean服务器的控制下。
MBeanRegistrationException
-
preRegister
(
MBeanRegistration
接口)的MBean方法抛出异常。MBean将不予注册。
MBeanException
- MBean构造函数抛出了一个异常。
NotCompliantMBeanException
这类不符合JMX MBean。
IOException
如果发生一般通信异常。
public ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, MarshalledObject params, String[] signature, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException, IOException
RMIConnection
MBeanServerConnection.createMBean(String, ObjectName, ObjectName, Object[], String[])
,
Object[]
参数是包裹在一个
MarshalledObject
。
createMBean
接口
RMIConnection
className
- MBean类名称被实例化。
name
- MBean对象名称。可能是空的。
loaderName
-类加载器对象的名字被使用。
params
-一个数组包含构造函数的参数被调用,封装成一个
MarshalledObject
。封装的数组可以是空的,相当于一个空数组。
signature
-数组包含要调用构造函数的签名。可以是空的,相当于一个空数组。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
ObjectInstance
,含有
ObjectName
和新实例化MBean的java类的名称。如果有
ObjectName
是
n
,包含java类的名字是
getMBeanInfo(n)
.getClassName()
。
ReflectionException
-包装
java.lang.ClassNotFoundException
或
java.lang.Exception
时试图调用MBean的构造函数。
InstanceAlreadyExistsException
的MBean已经是MBean服务器的控制下。
MBeanRegistrationException
-
preRegister
(
MBeanRegistration
接口)的MBean方法抛出异常。MBean将不予注册。
MBeanException
- MBean构造函数抛出了一个异常。
NotCompliantMBeanException
这类不符合JMX MBean。
InstanceNotFoundException
-指定的类装载器是不是在MBean服务器注册。
IOException
如果发生一般通信异常。
public void unregisterMBean(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, MBeanRegistrationException, IOException
RMIConnection
unregisterMBean
接口
RMIConnection
name
- MBean对象名称未登记。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
的MBean指定不在MBean服务器注册。
MBeanRegistrationException
- prederegister((
MBeanRegistration
接口)的MBean方法抛出异常。
IOException
如果发生一般通信异常。
public ObjectInstance getObjectInstance(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, IOException
RMIConnection
getObjectInstance
接口
RMIConnection
name
- MBean对象名称。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
ObjectInstance
。所含的
ObjectName
是
name
和包含的类的名字是
getMBeanInfo(name)
.getClassName()
。
InstanceNotFoundException
的MBean指定不在MBean服务器注册。
IOException
如果发生一般通信异常。
public Set<ObjectInstance> queryMBeans(ObjectName name, MarshalledObject query, Subject delegationSubject) throws IOException
RMIConnection
queryMBeans
接口
RMIConnection
name
-对象名称模式识别的MBean进行检索。如果为空或没有域和关键属性被指定,所有MBeans注册将被收回。
query
-查询表达式适用于选择MBeans,封装成一个
MarshalledObject
。如果
MarshalledObject
封装了一个空值没有查询表达式将用于选择MBeans。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
ObjectInstance
MBeans。如果没有MBean满足查询,则返回一个空列表。
IOException
如果发生一般通信异常。
public Set<ObjectName> queryNames(ObjectName name, MarshalledObject query, Subject delegationSubject) throws IOException
RMIConnection
queryNames
接口
RMIConnection
name
-对象名称模式识别的MBean名进行检索。如果为空或没有域和关键属性被指定,所有注册MBean的名字将被收回。
query
-查询表达式适用于选择MBeans,封装成一个
MarshalledObject
。如果
MarshalledObject
封装了一个空值没有查询表达式将用于选择MBeans。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
IOException
如果发生一般通信异常。
public boolean isRegistered(ObjectName name, Subject delegationSubject) throws IOException
RMIConnection
isRegistered
接口
RMIConnection
name
- MBean对象名称进行检查。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
IOException
如果发生一般通信异常。
public Integer getMBeanCount(Subject delegationSubject) throws IOException
RMIConnection
getMBeanCount
接口
RMIConnection
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
IOException
如果发生一般通信异常。
public Object getAttribute(ObjectName name, String attribute, Subject delegationSubject) throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException, IOException
RMIConnection
getAttribute
接口
RMIConnection
name
-对象名称的MBean的属性进行检索。
attribute
-指定要检索的属性的名称。
delegationSubject
-
Subject
包含代表团负责人或
null
如果认证主要是用来代替。
MBeanException
包例外MBean的吸气剂扔。
AttributeNotFoundException
-属性中指定的MBean无法访问。
InstanceNotFoundException
的MBean指定不在MBean服务器注册。
ReflectionException
-包装
java.lang.Exception
扔在试图调用getter。
IOException
如果发生一般通信异常。
RMIConnection.setAttribute(javax.management.ObjectName, java.rmi.MarshalledObject, javax.security.auth.Subject)
public AttributeList getAttributes(ObjectName name, String[] attributes, Subject delegationSubject) throws InstanceNotFoundException, ReflectionException, IOException
RMIConnection
getAttributes
接口
RMIConnection
name
-对象名称的MBean,检索的属性。
attributes
-目录的属性进行检索。
delegationSubject
-
Subject
包含代表团负责人或
null
如果认证主要是用来代替。
InstanceNotFoundException
的MBean指定不在MBean服务器注册。
ReflectionException
-例外发生在试图调用一个动态MBean的getattributes方法。
IOException
如果发生一般通信异常。
RMIConnection.setAttributes(javax.management.ObjectName, java.rmi.MarshalledObject, javax.security.auth.Subject)
public void setAttribute(ObjectName name, MarshalledObject attribute, Subject delegationSubject) throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException, IOException
RMIConnection
MBeanServerConnection.setAttribute(ObjectName, Attribute)
。的
Attribute
参数是包裹在一个
MarshalledObject
。
setAttribute
接口
RMIConnection
name
- MBean的属性可以设置名称。
attribute
-属性要设置的识别和可设置的值,封装成一个
MarshalledObject
。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
的MBean指定不在MBean服务器注册。
AttributeNotFoundException
-属性中指定的MBean无法访问。
InvalidAttributeValueException
为属性指定的值无效。
MBeanException
包例外MBean的setter抛出。
ReflectionException
-包装
java.lang.Exception
扔在试图调用setter。
IOException
如果发生一般通信异常。
RMIConnection.getAttribute(javax.management.ObjectName, java.lang.String, javax.security.auth.Subject)
public AttributeList setAttributes(ObjectName name, MarshalledObject attributes, Subject delegationSubject) throws InstanceNotFoundException, ReflectionException, IOException
RMIConnection
MBeanServerConnection.setAttributes(ObjectName, AttributeList)
。的
AttributeList
参数是包裹在一个
MarshalledObject
。
setAttributes
接口
RMIConnection
name
-对象名称的MBean的属性来设置。
attributes
-目录属性:属性的识别是集和它们的值被设置为,封装成一个
MarshalledObject
。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
的MBean指定不在MBean服务器注册。
ReflectionException
-例外发生在试图调用一个动态MBean的getattributes方法。
IOException
如果发生一般通信异常。
RMIConnection.getAttributes(javax.management.ObjectName, java.lang.String[], javax.security.auth.Subject)
public Object invoke(ObjectName name, String operationName, MarshalledObject params, String[] signature, Subject delegationSubject) throws InstanceNotFoundException, MBeanException, ReflectionException, IOException
RMIConnection
MBeanServerConnection.invoke(ObjectName, String, Object[], String[])
。的
Object[]
参数是包裹在一个
MarshalledObject
。
invoke
接口
RMIConnection
name
-对象名称的MBean的方法被调用。
operationName
-操作的名称被调用。
params
-一个数组包含的参数设置操作时调用,封装成一个
MarshalledObject
。封装的数组可以是空的,相当于一个空数组。
signature
-一个数组包含的操作签名。该类的对象将使用相同的类装载器是用于装载MBean操作的调用加载。可以是空的,相当于一个空数组。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
的MBean指定不在MBean服务器注册。
MBeanException
包例外MBean的方法被调用。
ReflectionException
-包装
java.lang.Exception
扔在试图调用的方法。
IOException
如果发生一般通信异常。
public String getDefaultDomain(Subject delegationSubject) throws IOException
RMIConnection
getDefaultDomain
接口
RMIConnection
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
IOException
如果发生一般通信异常。
public String[] getDomains(Subject delegationSubject) throws IOException
RMIConnection
getDomains
接口
RMIConnection
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
IOException
如果发生一般通信异常。
public MBeanInfo getMBeanInfo(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, IntrospectionException, ReflectionException, IOException
RMIConnection
getMBeanInfo
接口
RMIConnection
name
- MBean名分析
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
MBeanInfo
允许这个MBean的所有属性和操作的检索实例。
InstanceNotFoundException
-没有发现指定的MBean。
IntrospectionException
-例外发生在反思。
ReflectionException
-例外发生在试图调用一个动态MBean的getmbeaninfo。
IOException
如果发生一般通信异常。
public boolean isInstanceOf(ObjectName name, String className, Subject delegationSubject) throws InstanceNotFoundException, IOException
RMIConnection
isInstanceOf
接口
RMIConnection
name
- MBean的
ObjectName
。
className
-类的名字。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
的MBean指定不在MBean服务器注册。
IOException
如果发生一般通信异常。
public Integer[] addNotificationListeners(ObjectName[] names, MarshalledObject[] filters, Subject[] delegationSubjects) throws InstanceNotFoundException, IOException
RMIConnection
登记的通知从给定的MBean,匹配给定的滤波器。远程用户可以利用fetchNotifications
方法检索通知。
每一个听众,原来NotificationListener
和handback
都保存在客户端;为了让客户能够识别他们,服务器生成并返回一个独特的listenerID
。这listenerID
转发给远程客户端与Notifications
。
如果给定的(名称,过滤器)对中的任何一个不能被注册,那么操作失败时有一个例外,并且没有注册的名称或过滤器。
addNotificationListeners
接口
RMIConnection
names
-
ObjectNames
识别MBeans发出通知。
filters
-集合表示的
NotificationFilters
数组。这个数组的元素可以是空的。
delegationSubjects
-
Subjects
代表其中的听众正在增加。这个数组的元素可以是空的。同时,
delegationSubjects
本身的参数可以为空,这相当于空值的数组的大小相同的
names
和
filters
阵列。
listenerIDs
识别本地听众的数组。此数组具有相同的元素数量作为参数。
InstanceNotFoundException
-如果一个的
names
不对应于任何注册MBean。
IOException
如果发生一般通信异常。
public void addNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject) throws InstanceNotFoundException, IOException
RMIConnection
MBeanServerConnection.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
。的
NotificationFilter
参数是包裹在一个
MarshalledObject
。的
Object
(盖印)参数也被包裹在一个
MarshalledObject
。
addNotificationListener
接口
RMIConnection
name
-名称的MBean的听众应该增加。
listener
-监听器将处理由注册MBean发出的通知对象的名称。
filter
-过滤对象,封装成一个
MarshalledObject
。如果滤波器封装在
MarshalledObject
具有空值,没有过滤之前将通知进行处理。
handback
-上下文被送到听众当通知发出后,封装成一个
MarshalledObject
。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
-通知监听器MBean名或通知广播员不符合任何注册MBean。
IOException
如果发生一般通信异常。
RMIConnection.removeNotificationListener(ObjectName, ObjectName, Subject)
,
RMIConnection.removeNotificationListener(ObjectName, ObjectName, MarshalledObject, MarshalledObject, Subject)
public void removeNotificationListeners(ObjectName name, Integer[] listenerIDs, Subject delegationSubject) throws InstanceNotFoundException, ListenerNotFoundException, IOException
RMIConnection
处理removeNotificationListener(ObjectName, NotificationListener)
和removeNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
方法。
此方法删除一个或多个从一个给定的MBean服务器MBean NotificationListener
s。
的NotificationListeners
由被RMIConnection.addNotificationListeners(ObjectName[], MarshalledObject[], Subject[])
方法返回的ID识别。
removeNotificationListeners
接口
RMIConnection
name
-
ObjectName
标识MBean发出通知。
listenerIDs
-对应于听众删除ID列表。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
-如果给定的
name
不对应于任何注册MBean。
ListenerNotFoundException
-如果一个听众不在服务器端发现。这个例外如果MBean丢弃一些原因以外的电话
MBeanServer.removeNotificationListener
听众发生。
IOException
如果发生一般通信异常。
public void removeNotificationListener(ObjectName name, ObjectName listener, Subject delegationSubject) throws InstanceNotFoundException, ListenerNotFoundException, IOException
RMIConnection
removeNotificationListener
接口
RMIConnection
name
-名称的MBean的听众应该被删除。
listener
-监听器对象名称被删除。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
的MBean提供的名称不符合任何注册MBean。
ListenerNotFoundException
-听者不在MBean注册。
IOException
如果发生一般通信异常。
RMIConnection.addNotificationListener(javax.management.ObjectName, javax.management.ObjectName, java.rmi.MarshalledObject, java.rmi.MarshalledObject, javax.security.auth.Subject)
public void removeNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject) throws InstanceNotFoundException, ListenerNotFoundException, IOException
RMIConnection
MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
,
NotificationFilter
参数是包裹在一个
MarshalledObject
。的
Object
参数也被包裹在一个
MarshalledObject
。
removeNotificationListener
接口
RMIConnection
name
-名称的MBean的听众应该被删除。
listener
-听者以前添加到这个MBean。
filter
-过滤器,指定当听众加入,封装成一个
MarshalledObject
。
handback
-盖印,指定当听众加入,封装成一个
MarshalledObject
。
delegationSubject
包含代表团负责人或
null
的
Subject
如果认证主要是用来代替。
InstanceNotFoundException
-提供MBean名不匹配任何已注册的MBean。
ListenerNotFoundException
-听者不在MBean注册,或不与给定的滤波器和盖印注册。
IOException
如果发生一般通信异常。
RMIConnection.addNotificationListener(javax.management.ObjectName, javax.management.ObjectName, java.rmi.MarshalledObject, java.rmi.MarshalledObject, javax.security.auth.Subject)
public NotificationResult fetchNotifications(long clientSequenceNumber, int maxNotifications, long timeout) throws IOException
RMIConnection
从连接器服务器检索通知。此方法可以阻止直到至少有一个通知或直到指定的超时时间到达。该方法还可以在任何时间返回零通知。
一个通知可以如果序列号不小于clientSequenceNumber
和这个客户已经注册了至少一个听众对MBean产生的通知包含在结果,与过滤器接受通知。每一位听众,在通知感兴趣的是由一个整数ID返回的RMIConnection.addNotificationListeners(ObjectName[], MarshalledObject[], Subject[])
鉴定。
fetchNotifications
接口
RMIConnection
clientSequenceNumber
-客户感兴趣的第一个序列号。如果是否定的,它被解释为意义的序列号,下一个通知将有。
maxNotifications
-不同通知的最大数量返回。在返回的
NotificationResult
的
TargetedNotification
阵列可以有更多的元素比这如果同样的通知出现不止一次。如果这个参数是负的,则该行为是未指定的。
timeout
的最大毫秒时间等待通知的到来。这可以是0,表明该方法不应该等待,如果没有通知,但应该立即返回。它可以
Long.MAX_VALUE
表明没有超时。如果这个参数是负的,则该行为是未指定的。
NotificationResult
。
IOException
如果发生一般通信异常。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.