- java.lang.Object
-
- javax.management.NotificationBroadcasterSupport
-
- javax.management.remote.JMXConnectorServer
-
- javax.management.remote.rmi.RMIConnectorServer
-
- All Implemented Interfaces:
-
MBeanRegistration
,NotificationBroadcaster
,NotificationEmitter
,JMXAddressable
,JMXConnectorServerMBean
public class RMIConnectorServer extends JMXConnectorServer
从远程客户端创建基于RMI的连接的JMX API连接器服务器。 通常,这样的连接器服务器是使用
JMXConnectorServerFactory
制造的 。 但是,专门的应用程序可以直接使用该类,例如使用RMIServerImpl
对象。- 从以下版本开始:
- 1.5
-
-
Field Summary
Fields Modifier and Type Field 描述 static String
CREDENTIAL_TYPES
指定可接受作为RMIServer.newClient()
远程方法调用参数的类名列表的属性的名称。static String
JNDI_REBIND_ATTRIBUTE
指定表示RMI连接器服务器的RMIServer
存根是否应覆盖相同地址的现有存根的属性名称。static String
RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
为与此连接器一起创建的RMI对象指定RMIClientSocketFactory
的属性的名称。static String
RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
为与此连接器一起创建的RMI对象指定RMIServerSocketFactory
的属性的名称。-
Fields inherited from class javax.management.remote.JMXConnectorServer
AUTHENTICATOR
-
-
构造方法摘要
构造方法 Constructor 描述 RMIConnectorServer(JMXServiceURL url, Map<String,?> environment)
做一个RMIConnectorServer
。RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, MBeanServer mbeanServer)
为给定的MBean服务器做一个RMIConnectorServer
。RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, RMIServerImpl rmiServerImpl, MBeanServer mbeanServer)
为给定的MBean服务器做一个RMIConnectorServer
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected void
connectionClosed(String connectionId, String message, Object userData)
当客户端连接正常关闭时,由子类调用。protected void
connectionFailed(String connectionId, String message, Object userData)
当客户端连接失败时由子类调用。protected void
connectionOpened(String connectionId, String message, Object userData)
当新的客户端连接打开时由子类调用。JMXServiceURL
getAddress()
该连接器服务器的地址。Map<String,?>
getAttributes()
此连接器服务器的属性。boolean
isActive()
确定连接器服务器是否处于活动状态。void
setMBeanServerForwarder(MBeanServerForwarder mbsf)
插入一个对象,拦截通过此连接器服务器到达的MBean服务器的请求。void
start()
激活连接器服务器,即开始侦听客户端连接。void
stop()
停用连接器服务器,即停止侦听客户端连接。JMXConnector
toJMXConnector(Map<String,?> env)
返回此连接器服务器的客户端存根。-
Methods inherited from class javax.management.remote.JMXConnectorServer
getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister
-
Methods inherited from class javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
-
-
-
-
字段详细信息
-
JNDI_REBIND_ATTRIBUTE
public static final String JNDI_REBIND_ATTRIBUTE
指定表示RMI连接器服务器的
RMIServer
存根是否应覆盖同一地址的现有存根的属性名称。 与此属性相关联的值(如果有)应为与"true"
或"false"
相同的忽略大小写的字符串。 默认值为false。- 另请参见:
- Constant Field Values
-
RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
public static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
为与此连接器一起创建的RMI对象指定
RMIClientSocketFactory
的属性名称。 与此属性关联的值必须为RMIClientSocketFactory
类型,并且只能在创建连接器服务器时提供的Map
参数中指定。- 另请参见:
- Constant Field Values
-
RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
public static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
为与此连接器一起创建的RMI对象指定
RMIServerSocketFactory
的属性的名称。 与此属性关联的值必须是类型RMIServerSocketFactory
,并且只能在创建连接器服务器时提供的Map
参数中指定。- 另请参见:
- Constant Field Values
-
CREDENTIAL_TYPES
public static final String CREDENTIAL_TYPES
指定可接受作为RMIServer.newClient()
远程方法调用的参数的类名列表的属性的名称。这个类的列表应该对应于与RMIServer实现相关联的安装的JMXAuthenticator使用的凭证类(或类)的传递性关闭。
如果属性未设置,或为null,那么任何类都被认为是可接受的。
- 另请参见:
- Constant Field Values
-
-
构造方法详细信息
-
RMIConnectorServer
public RMIConnectorServer(JMXServiceURL url, Map<String,?> environment) throws IOException
做一个
RMIConnectorServer
。 这相当于调用RMIConnectorServer(directoryURL,environment,null,null)
- 参数
-
url
- 定义如何创建连接器服务器的URL。 不能为空。 -
environment
- 管理RMI对象的创建和存储的属性。 可以为空,这相当于一个空的地图。 - 异常
-
IllegalArgumentException
- 如果url
为空。 -
MalformedURLException
- 如果url
不符合RMI连接器的语法,或者如果该实现不能识别其协议。 当使用此构造函数时,只有“rmi”有效。 -
IOException
- 如果由于某种原因无法创建连接器服务器,或者它的start
方法是不可避免的将失败。
-
RMIConnectorServer
public RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, MBeanServer mbeanServer) throws IOException
为给定的MBean服务器做一个
RMIConnectorServer
。 这相当于调用RMIConnectorServer(directoryURL,environment,null,mbeanServer)
- 参数
-
url
- 定义如何创建连接器服务器的URL。 不能为空。 -
environment
- 管理RMI对象的创建和存储的属性。 可以为空,这相当于一个空的地图。 -
mbeanServer
- 连接新连接器服务器的MBean服务器,如果通过在MBean服务器中注册为MBean,将附加为null。 - 异常
-
IllegalArgumentException
- 如果url
为空。 -
MalformedURLException
- 如果url
不符合RMI连接器的语法,或者如果该实现不能识别其协议。 当使用此构造函数时,只有“rmi”有效。 -
IOException
- 如果由于某种原因无法创建连接器服务器,或者如果其start
方法不可避免,则不可避免。
-
RMIConnectorServer
public RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, RMIServerImpl rmiServerImpl, MBeanServer mbeanServer) throws IOException
为给定的MBean服务器创建一个
RMIConnectorServer
。- 参数
-
url
- 定义如何创建连接器服务器的URL。 不能为空。 -
environment
- 管理RMI对象的创建和存储的属性。 可以为空,这相当于一个空的地图。 -
rmiServerImpl
- RMIServer接口的实现,与url中指定的协议类型一致。 如果此参数为非空,则由url指定的协议类型不受约束,并被假定为有效。 否则,只能识别“rmi”。 -
mbeanServer
- 连接新连接器服务器的MBean服务器,如果通过在MBean服务器中注册为MBean,将附加为null。 - 异常
-
IllegalArgumentException
- 如果url
为空。 -
MalformedURLException
- 如果url
不符合RMI连接器的语法,或者其实现不能识别其协议。 当rmiServerImpl为空时, 只能识别“rmi”。 -
IOException
- 如果由于某种原因无法创建连接器服务器,或者它的start
方法将不可避免。 - 另请参见:
-
start()
-
-
方法详细信息
-
toJMXConnector
public JMXConnector toJMXConnector(Map<String,?> env) throws IOException
返回此连接器服务器的客户端存根。 客户端存根是一个可串行化的对象,其
connect
方法可用于与此连接器服务器建立一个新连接。- Specified by:
-
toJMXConnector
在接口JMXConnectorServerMBean
- 重写:
-
toJMXConnector
在JMXConnectorServer
- 参数
-
env
- 可以提供给JMXConnector.connect(Map)
的客户端连接参数。 可以为空,这相当于一个空的地图。 - 结果
- 客户端存根可用于与此连接器服务器建立新连接。
- 异常
-
UnsupportedOperationException
- 如果此连接器服务器不支持生成客户端存根。 -
IllegalStateException
- 如果JMXConnectorServer未启动(请参阅isActive()
)。 -
IOException
- 如果通信问题意味着无法创建存根。
-
start
public void start() throws IOException
激活连接器服务器,即开始侦听客户端连接。 当连接器服务器已经处于活动状态时调用此方法没有任何效果。 当连接器服务器停止时调用此方法将生成一个
IOException
。第一次调用该方法的行为取决于在建造过程中提供的参数,如下所述。
首先,需要
RMIServerImpl
子类的对象,通过RMI导出连接器服务器:- 如果向构造函数提供了一个
RMIServerImpl
,则使用它。 - 否则,如果
JMXServiceURL
为空,或它的协议的部分是rmi
,类型的对象RMIJRMPServerImpl
被创建。 - 否则,实现可以创建一个实现特定的
RMIServerImpl
或者它可以抛出MalformedURLException
。
如果给定的地址包含
javax.management.remote.rmi
的包文档中指定的JNDI目录URL,那么这个RMIConnectorServer
将通过将RMIServerImpl
绑定到给定地址来引导。如果
JMXServiceURL
的URL路径部分为空或单个斜杠(/
),则RMI对象将不会绑定到目录。 相反,对它的引用将被编码在RMIConnectorServer地址的URL路径(由getAddress()
返回)。rmi
的编码在rmi
的软件包文档中有所描述。当URL路径既不为空,也不是JNDI目录URL,或者当协议不是
rmi
,行为是实现定义的,并且可能包括在创建连接器服务器或启动时抛出MalformedURLException
。- 异常
-
IllegalStateException
- 如果连接器服务器尚未连接到MBean服务器。 -
IOException
- 如果连接器服务器无法启动。
- 如果向构造函数提供了一个
-
stop
public void stop() throws IOException
停用连接器服务器,即停止侦听客户端连接。 调用此方法还将关闭此服务器所做的所有客户端连接。 此方法返回后,无论是正常还是异常,连接器服务器将不会创建任何新的客户端连接。
一旦连接器服务器停止,它将无法再次启动。
当连接器服务器已经停止时调用此方法没有任何作用。 当连接器服务器尚未启动时调用此方法将永久禁用连接器服务器对象。
如果关闭客户端连接会产生异常,则不会从此方法抛出该异常。 从此MBean发出的连接ID无法关闭的
JMXConnectionNotification
。关闭连接器服务器是一个潜在的慢操作。 例如,如果具有打开连接的客户端计算机崩溃,则关闭操作可能必须等待网络协议超时。 不想封闭操作的调用者应该在单独的线程中执行。
此方法调用连接器服务器的
RMIServerImpl
对象上的方法close
。如果通过
start
方法将RMIServerImpl
绑定到JNDI目录,则该方法将从目录中绑定。- 异常
-
IOException
- 如果服务器无法正常关闭,或者RMIServerImpl
无法从目录中解除绑定。 抛出此异常时,如果适用,服务器已尝试关闭所有客户端连接; 致电RMIServerImpl.close()
; 并从其目录中解除绑定RMIServerImpl
(如果适用)。 除了服务器尝试关闭客户端连接之外,所有客户端连接都可能关闭。
-
isActive
public boolean isActive()
说明从界面JMXConnectorServerMBean
复制- 结果
- 新新新旗新新新新旗新新旗新新旗新新旗新新旗旗新新新旗新新旗新新旗新新200新新旗新新200新新200
-
getAddress
public JMXServiceURL getAddress()
描述从接口JMXConnectorServerMBean
复制该连接器服务器的地址。
返回的地址可能不是创建连接器服务器时提供的原始
JMXServiceURL
,因为原始地址可能并不总是完成。 例如,启动连接器服务器时可以动态分配端口号。 相反,返回的地址是JMXConnectorServer
的实际JMXServiceURL
。 这是客户端提供给JMXConnectorFactory.connect(JMXServiceURL)
的地址。需要注意的是返回的地址可能是
null
如果JMXConnectorServer
尚未active
。- 结果
- 该连接器服务器的地址,如果没有,则为null。
-
getAttributes
public Map<String,?> getAttributes()
描述从界面JMXConnectorServerMBean
复制此连接器服务器的属性。
- 结果
- 包含此连接器服务器的属性的只读映射。 其值不可序列化的属性从该地图中省略。 如果没有可序列化的属性,返回的地图是空的。
-
setMBeanServerForwarder
public void setMBeanServerForwarder(MBeanServerForwarder mbsf)
说明从界面JMXConnectorServerMBean
复制插入一个对象,拦截通过此连接器服务器到达的MBean服务器的请求。 此对象将作为
MBeanServer
提供,用于由此连接器服务器创建的任何新连接。 现有连接不受影响。该方法可以使用不同的
MBeanServerForwarder
对象多次调用。 结果是一连串的代理商。 最后一名货车是连锁店的第一名。 更详细地说:如果此连接器服务器已与
MBeanServer
对象关联,那么该对象将被赋予mbsf.setMBeanServer
。 如果这样做会产生异常,则此方法会引发相同的异常,而不会产生任何其他影响。如果此连接器尚未与
MBeanServer
对象关联,或者如果刚才提到的mbsf.setMBeanServer
呼叫成功,则mbsf
将成为此连接器服务器的MBeanServer
。
- Specified by:
-
setMBeanServerForwarder
在接口JMXConnectorServerMBean
- 重写:
-
setMBeanServerForwarder
在JMXConnectorServer
- 参数
-
mbsf
- 全新MBeanServerForwarder
。
-
connectionOpened
protected void connectionOpened(String connectionId, String message, Object userData)
描述从类别复制:JMXConnectorServer
当新的客户端连接打开时由子类调用。 添加
connectionId
通过返回的列表JMXConnectorServer.getConnectionIds()
,然后发出JMXConnectionNotification
型JMXConnectionNotification.OPENED
。- 重写:
-
connectionOpened
在JMXConnectorServer
- 参数
-
connectionId
- 新连接的ID。 这必须与以前由此连接器服务器打开的任何连接的ID不同。 -
message
- 发出的消息JMXConnectionNotification
。 可以为null。 见Notification.getMessage()
。 -
userData
-userData
发出的JMXConnectionNotification
。 可以为null。 见Notification.getUserData()
。
-
connectionClosed
protected void connectionClosed(String connectionId, String message, Object userData)
说明从类别复制JMXConnectorServer
当客户端连接正常关闭时,由子类调用。 删除
connectionId
从返回的列表JMXConnectorServer.getConnectionIds()
,然后发出JMXConnectionNotification
型JMXConnectionNotification.CLOSED
。- 重写:
-
connectionClosed
在JMXConnectorServer
- 参数
-
connectionId
- 已关闭连接的ID。 -
message
- 发出的消息JMXConnectionNotification
。 可以为null。 见Notification.getMessage()
。 -
userData
-userData
发出的JMXConnectionNotification
。 可以为null。 见Notification.getUserData()
。
-
connectionFailed
protected void connectionFailed(String connectionId, String message, Object userData)
描述从类复制JMXConnectorServer
当客户端连接失败时由子类调用。 删除
connectionId
从返回的列表JMXConnectorServer.getConnectionIds()
,然后发出JMXConnectionNotification
型JMXConnectionNotification.FAILED
。- 重写:
-
connectionFailed
在JMXConnectorServer
- 参数
-
connectionId
- 连接失败的ID。 -
message
- 发出的消息JMXConnectionNotification
。 可以为null。 见Notification.getMessage()
。 -
userData
- 发布的userData
JMXConnectionNotification
。 可以为null。 见Notification.getUserData()
。
-
-