- java.lang.Object
-
- javax.management.remote.rmi.RMIConnector
-
- All Implemented Interfaces:
-
Closeable
,Serializable
,AutoCloseable
,JMXAddressable
,JMXConnector
public class RMIConnector extends Object implements JMXConnector, Serializable, JMXAddressable
与远程RMI连接器的连接。 通常,这种连接使用
JMXConnectorFactory
进行 。 然而,专门的应用程序可以直接使用这个类,例如使用一个没有经过JNDI的RMIServer
存根。- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
Field Summary
-
Fields inherited from interface javax.management.remote.JMXConnector
CREDENTIALS
-
-
构造方法摘要
构造方法 Constructor 描述 RMIConnector(JMXServiceURL url, Map<String,?> environment)
构造将连接RMI连接器服务器与给定地址的RMIConnector
。RMIConnector(RMIServer rmiServer, Map<String,?> environment)
使用给定的RMI存根构造一个RMIConnector
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
addConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
添加一个监听器以通知连接状态的变化。void
close()
关闭与其服务器的客户端连接。void
connect()
建立与连接器服务器的连接。void
connect(Map<String,?> environment)
建立与连接器服务器的连接。JMXServiceURL
getAddress()
该连接器的地址。String
getConnectionId()
从连接器服务器获取此连接的ID。MBeanServerConnection
getMBeanServerConnection()
返回表示远程MBean服务器的MBeanServerConnection
对象。MBeanServerConnection
getMBeanServerConnection(Subject delegationSubject)
返回一个表示远程MBean服务器的MBeanServerConnection
对象,代表所提供的委托主体执行操作。void
removeConnectionNotificationListener(NotificationListener listener)
从列表中删除一个监听器以通知状态更改。void
removeConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
从列表中删除一个监听器以通知状态更改。String
toString()
返回此对象的字符串表示形式。
-
-
-
构造方法详细信息
-
RMIConnector
public RMIConnector(JMXServiceURL url, Map<String,?> environment)
构造将连接RMI连接器服务器与给定地址的
RMIConnector
。该地址可以直接引用连接器服务器,使用以下语法:
service:jmx:rmi://[host[:port]]/stub/encoded-stub
(这里,方括号
[]
不是地址的一部分,但表示主机和端口是可选的。)该地址可以指示通过JNDI查找RMI存根的位置,使用以下语法:
service:jmx:rmi://[host[:port]]/jndi/jndi-name
实现还可以识别额外的地址语法,例如:
service:jmx:iiop://[host[:port]]/stub/encoded-stub
- 参数
-
url
- RMI连接器服务器的地址。 -
environment
- 指定如何进行连接的附加属性。 对于基于JNDI的地址,这些属性可以有效地包括由InitialContext
识别的JNDI属性。 此参数可以为空,这相当于一个空的Map。 - 异常
-
IllegalArgumentException
- 如果url
为空。
-
RMIConnector
public RMIConnector(RMIServer rmiServer, Map<String,?> environment)
构造一个
RMIConnector
使用给定的RMI存根。- 参数
-
rmiServer
- 表示RMI连接器服务器的RMI存根。 -
environment
- 指定如何进行连接的附加属性。 此参数可以为空,这相当于一个空的Map。 - 异常
-
IllegalArgumentException
- 如果rmiServer
为空。
-
-
方法详细信息
-
toString
public String toString()
返回此对象的字符串表示形式。 一般来说,
toString
方法返回一个“toString
代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。
-
getAddress
public JMXServiceURL getAddress()
该连接器的地址。
- Specified by:
-
getAddress
在接口JMXAddressable
- 结果
- 该连接器的地址,如果没有,则为null。
- 从以下版本开始:
- 1.6
-
connect
public void connect() throws IOException
描述从接口JMXConnector
复制建立与连接器服务器的连接。 这个方法相当于
connect(null)
。- Specified by:
-
connect
在接口JMXConnector
- 异常
-
IOException
- 如果由于通信问题而无法进行连接
-
connect
public void connect(Map<String,?> environment) throws IOException
说明从接口JMXConnector
复制建立与连接器服务器的连接。
如果
connect
已经在此对象上成功调用,则再次调用它不起作用。 不过,如果JMXConnector.close()
被connect
,新的connect
将会抛出一个IOException
。否则,
connect
从未在此对象上被调用,或者已被调用,但产生异常。 然后拨打connect
将尝试建立与连接器服务器的连接。- Specified by:
-
connect
在接口JMXConnector
- 参数
-
environment
- 连接的属性。 此映射中的属性会覆盖创建JMXConnector
时指定的映射中的属性(如果有)。 此参数可以为null,这相当于一个空的地图。 - 异常
-
IOException
- 如果由于通信问题而无法建立连接
-
getConnectionId
public String getConnectionId() throws IOException
描述从接口JMXConnector
复制从连接器服务器获取此连接的ID。 对于给定的连接器服务器,每个连接将具有唯一的ID,在连接的生命周期内不会更改。
- Specified by:
-
getConnectionId
在接口JMXConnector
- 结果
-
此连接的唯一ID。
这与连接器服务器在其
JMXConnectionNotification
中包含的ID相同。package description
描述了连接ID的约定。 - 异常
-
IOException
- 如果无法获取连接ID,例如连接被关闭或断开。
-
getMBeanServerConnection
public MBeanServerConnection getMBeanServerConnection() throws IOException
说明从接口JMXConnector
复制返回表示远程MBean服务器的
MBeanServerConnection
对象。 对于给定的JMXConnector
,这个方法的两个成功调用通常会返回相同的MBeanServerConnection
对象,尽管这不是必需的。对于返回的
MBeanServerConnection
中的每个方法,调用该方法将导致在远程MBean服务器中调用相应的方法。 MBean服务器方法返回的值是返回给客户端的值。 如果MBean服务器方法产生一个异常
,客户端可以看到相同的异常
。 如果MBean服务器方法,或者试图调用它,产生Error
,所述Error
被包裹在一个JMXServerErrorException
,这是由客户端可见。调用此方法等效于调用
getMBeanServerConnection(null)
,这意味着没有指定委托主体,并且所有在MBeanServerConnection
上调用的操作必须使用经过身份验证的主题(如果有)。- Specified by:
-
getMBeanServerConnection
在接口JMXConnector
- 结果
-
通过将其方法转发到远程MBean服务器来实现
MBeanServerConnection
接口的对象。 - 异常
-
IOException
- 如果无法创建有效的MBeanServerConnection
,例如因为尚未建立与远程MBean服务器的连接(使用connect
方法),或者已关闭或已断开连接。
-
getMBeanServerConnection
public MBeanServerConnection getMBeanServerConnection(Subject delegationSubject) throws IOException
描述从接口JMXConnector
复制返回一个表示远程MBean服务器的
MBeanServerConnection
对象,代表所提供的委托主体执行操作。 对于给定的JMXConnector
和Subject
,两个成功调用此方法通常将返回相同的MBeanServerConnection
对象,尽管这不是必需的。对于返回的
MBeanServerConnection
中的每个方法,调用该方法将导致在远程MBean服务器中代表给定的授权对象而不是经过身份验证的主题调用相应的方法。 MBean服务器方法返回的值是返回给客户端的值。 如果MBean服务器方法产生一个异常
,客户端可以看到相同的异常
。 如果MBean服务器方法,或者试图调用它,产生Error
,所述Error
被包裹在一个JMXServerErrorException
,这是由客户端可见。- Specified by:
-
getMBeanServerConnection
在接口JMXConnector
- 参数
-
delegationSubject
- 代表哪些请求将执行的Subject
。 可以为null,在这种情况下,将代表被认证的主题(如果有的话)执行请求。 - 结果
-
通过代表给定的授权主体将其方法转发到远程MBean服务器来实现
MBeanServerConnection
接口的对象。 - 异常
-
IOException
- 如果无法创建有效的MBeanServerConnection
,例如因为尚未建立与远程MBean服务器的连接(使用connect
方法)或已关闭或已断开连接。
-
addConnectionNotificationListener
public void addConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
说明从接口JMXConnector
复制添加一个监听器以通知连接状态的变化。 收听者将收到类型为
JMXConnectionNotification
的通知。 一个实现也可以发送其他类型的通知。可以使用此方法添加任意数量的侦听器。 可以使用相同或不同的过滤器和回传值,多次添加相同的侦听器。 重复条目没有特殊处理。 例如,如果一个监听器被注册了两次,没有过滤器,那么它的
handleNotification
方法将被调用两次,每次通知。- Specified by:
-
addConnectionNotificationListener
在接口JMXConnector
- 参数
-
listener
- 接收连接状态通知的侦听器。 -
filter
- 一个过滤器,用于选择要将哪些通知传递给侦听器;如果要传送所有通知,则为null。 -
handback
- 与每个通知一起提供给侦听器的对象。 可以为null。 - 另请参见:
-
JMXConnector.removeConnectionNotificationListener(javax.management.NotificationListener)
,NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
-
removeConnectionNotificationListener
public void removeConnectionNotificationListener(NotificationListener listener) throws ListenerNotFoundException
描述从接口JMXConnector
复制从列表中删除一个监听器以通知状态更改。 以前必须添加侦听器。 如果有多个匹配的侦听器,则全部被删除。
- Specified by:
-
removeConnectionNotificationListener
在接口JMXConnector
- 参数
-
listener
- 接收连接状态通知的侦听器。 - 异常
-
ListenerNotFoundException
- 如果监听器未注册此JMXConnector
。 - 另请参见:
-
JMXConnector.removeConnectionNotificationListener(NotificationListener, NotificationFilter, Object)
,JMXConnector.addConnectionNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
,NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
-
removeConnectionNotificationListener
public void removeConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException
描述从界面JMXConnector
复制从列表中删除一个监听器以通知状态更改。 先前已经添加了同样的三个参数的侦听器。 如果有多个匹配的侦听器,只有一个被删除。
- Specified by:
-
removeConnectionNotificationListener
在接口JMXConnector
- 参数
-
listener
- 接收连接状态通知的侦听器。 -
filter
- 一个过滤器,用于选择要将哪些通知传递给收听者。 可以为null。 -
handback
- 与每个通知一起提供给侦听器的对象。 可以为null。 - 异常
-
ListenerNotFoundException
- 如果收听者未注册此JMXConnector
,或未注册给定的过滤器和回传。 - 另请参见:
-
JMXConnector.removeConnectionNotificationListener(NotificationListener)
,JMXConnector.addConnectionNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
,NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
-
close
public void close() throws IOException
说明从界面JMXConnector
复制关闭与其服务器的客户端连接。 使用由
JMXConnector.getMBeanServerConnection()
返回的MBeanServerConnection的任何正在进行的或新的请求将获得IOException
。如果
close
已经在此对象上成功调用,则再次调用它不起作用。 如果close
从未被调用,或者如果被调用但产生异常,则会尝试关闭连接。 此尝试可以成功,在这种情况下,close
将正常返回,否则可能会生成异常。关闭连接是一个潜在的慢操作。 例如,如果服务器崩溃,则关闭操作可能需要等待网络协议超时。 不想封闭操作的调用者应该在单独的线程中执行。
- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- Specified by:
-
close
在接口JMXConnector
- 异常
-
IOException
- 如果连接不能被干净地关闭。 如果抛出此异常,则不知道连接的服务器端是否已完全关闭。
-
-