- 所有已实现的接口:
-
MBeanRegistration
,NotificationBroadcaster
,NotificationEmitter
,JMXAddressable
,JMXConnectorServerMBean
一个JMX API连接服务器,从远程客户端创建基于RMI的连接。通常,这样的连接服务器是使用JMXConnectorServerFactory
创建的。但是,专门的应用程序可以直接使用这个类,例如使用一个RMIServerImpl
对象。
- 自从:
- 1.5
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
指定一个属性的名称,该属性指定一个用于过滤可接受RMIServer.newClient()
远程方法调用的类的ObjectInputFilter
模式字符串。static final String
指定一个属性的名称,该属性指定表示RMI连接器服务器的RMIServer
存根是否应该覆盖同一地址处的现有存根。static final String
指定一个属性的名称,该属性指定与此连接器一起创建的RMI对象的RMIClientSocketFactory
。static final String
指定一个属性的名称,该属性指定与此连接器一起创建的RMI对象的RMIServerSocketFactory
。static final String
此属性定义一个模式,用于创建一个ObjectInputFilter
,当任何客户端向JMXConnectorServer
发送对象进行反序列化时,将使用该过滤器。Fields declared in class javax.management.remote.JMXConnectorServer
AUTHENTICATOR
-
Constructor Summary
ConstructorDescriptionRMIConnectorServer
(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
。 -
Method Summary
Methods declared in class javax.management.remote.JMXConnectorServer
connectionClosed, connectionFailed, connectionOpened, getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister, setMBeanServerForwarder
Methods declared in class javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
-
Field Details
-
JNDI_REBIND_ATTRIBUTE
指定一个属性的名称,该属性指定表示RMI连接器服务器的
RMIServer
存根是否应该覆盖同一地址处的现有存根。与此属性关联的值(如果有)应为一个字符串,忽略大小写,等于"true"
或"false"
。默认值为false。- 参见:
-
RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
指定一个属性的名称,该属性指定与此连接器一起创建的RMI对象的
RMIClientSocketFactory
。与此属性关联的值必须是RMIClientSocketFactory
类型,并且只能在创建连接器服务器时提供的Map
参数中指定。- 参见:
-
RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
指定一个属性的名称,该属性指定与此连接器一起创建的RMI对象的
RMIServerSocketFactory
。与此属性关联的值必须是RMIServerSocketFactory
类型,并且只能在创建连接器服务器时提供的Map
参数中指定。- 参见:
-
CREDENTIALS_FILTER_PATTERN
指定一个属性的名称,该属性指定一个ObjectInputFilter
模式字符串,用于过滤可接受RMIServer.newClient()
远程方法调用的类。过滤模式必须与
ObjectInputFilter.Config.createFilter(java.lang.String)
中使用的格式相同由过滤器允许的类列表应对应于由安装的与
RMIServer
实现关联的JMXAuthenticator
使用的凭据类(或类)的传递闭包。如果未设置属性,则任何类都被视为可接受。- 参见:
-
SERIAL_FILTER_PATTERN
此属性定义一个模式,用于创建一个ObjectInputFilter
,当任何客户端向JMXConnectorServer
发送对象进行反序列化时,将使用该过滤器。该过滤器将用于在客户端发送的序列化流中找到的任何类,包括所有JMX定义的类(例如
ObjectName
)、所有方法参数,以及如果存在于流中,则所有被任何反序列化对象的序列形式传递引用的类。该模式必须与ObjectInputFilter.Config.createFilter(java.lang.String)
中使用的格式相同。它可以定义允许的类的白名单、拒绝的类的黑名单、反序列化对象的最大深度等。为了使其功能正常,过滤器应至少允许所有在序列化所有JMX类作为参数在
RMIConnection
接口中引用的所有对象的传递闭包中的所有具体类型,以及客户端可能需要传输的所有类包装在marshalled objects
中以与在MBeanServer
中注册的MBeans进行交互。这可能包括所有具体的JMX OpenTypes及其在序列化形式中使用的类。在定义这样的过滤器时必须小心,因为定义太窄的白名单或太宽的黑名单可能会阻止合法客户端与
JMXConnectorServer
进行交互。- 参见:
-
-
Constructor Details
-
RMIConnectorServer
创建一个
RMIConnectorServer
。这相当于调用RMIConnectorServer(directoryURL,environment,null,null)
- 参数:
-
url
- 定义如何创建连接器服务器的URL。不能为空。 -
environment
- 管理创建和存储RMI对象的属性。可以为null,相当于一个空Map。 - 抛出:
-
IllegalArgumentException
- 如果url
为null。 -
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对象的属性。可以为null,相当于一个空Map。 -
mbeanServer
- 新连接器服务器附加到的MBean服务器,如果将其注册为MBean在MBean服务器中,则为null。 - 抛出:
-
IllegalArgumentException
- 如果url
为null。 -
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对象的属性。可以为null,相当于一个空Map。 -
rmiServerImpl
- RMIServer接口的实现,与url中指定的协议类型一致。如果此参数非null,则url指定的协议类型不受限制,被认为是有效的。否则,仅当rmiServerImpl为null时才会识别"rmi"。 -
mbeanServer
- 新连接器服务器附加到的MBean服务器,如果将其注册为MBean在MBean服务器中,则为null。 - 抛出:
-
IllegalArgumentException
- 如果url
为null。 -
MalformedURLException
- 如果url
不符合RMI连接器的语法,或者其协议未被此实现识别。仅当rmiServerImpl为null时,才会识别"rmi"。 -
IOException
- 如果由于某种原因无法创建连接器服务器,或者其start
方法将失败。 - 参见:
-
-
Method Details
-
toJMXConnector
返回此连接器服务器的客户端存根。客户端存根是一个可序列化对象,其
connect
方法可用于与此连接器服务器建立一个新连接。- 在接口中指定:
-
toJMXConnector
在接口JMXConnectorServerMBean
中 - 覆盖:
-
toJMXConnector
在类JMXConnectorServer
中 - 参数:
-
env
- 与JMXConnector.connect(Map)
提供的相同类型的客户端连接参数。可以为null,相当于一个空map。 - 返回:
- 一个客户端存根,可用于与此连接器服务器建立新连接。
- 抛出:
-
UnsupportedOperationException
- 如果此连接器服务器不支持生成客户端存根。 -
IllegalStateException
- 如果JMXConnectorServer未启动(参见isActive()
)。 -
IOException
- 如果通信问题导致无法创建存根。
-
start
激活连接器服务器,即开始监听客户端连接。当连接器服务器已经处于活动状态时调用此方法不会产生任何效果。当连接器服务器已停止时调用此方法将生成一个
IOException
。当首次调用此方法时的行为取决于在构造时提供的参数,如下所述。
首先,需要一个
RMIServerImpl
的子类对象,通过RMI导出连接器服务器:- 如果在构造函数中提供了
RMIServerImpl
,则将使用它。 - 否则,如果
JMXServiceURL
为null,或其协议部分为rmi
,则将创建一个类型为RMIJRMPServerImpl
的对象。 - 否则,实现可以创建一个特定于实现的
RMIServerImpl
,或者可能会抛出MalformedURLException
。
如果给定的地址包含在
javax.management.remote.rmi
包文档中指定的JNDI目录URL,则此RMIConnectorServer
将通过将RMIServerImpl
绑定到给定地址来引导。如果
JMXServiceURL
的URL路径部分为空或为单个斜杠(/
),则RMI对象将不会绑定到目录。相反,对其的引用将被编码在RMIConnectorServer地址的URL路径中(由getAddress()
返回)。有关rmi
的编码,请参阅javax.management.remote.rmi
包文档。当URL路径既不为空也不是JNDI目录URL,或者协议不是
rmi
时,行为是由实现定义的,可能包括在创建连接器服务器或启动连接器服务器时抛出MalformedURLException
。- 抛出:
-
IllegalStateException
- 如果连接器服务器尚未附加到MBean服务器。 -
IOException
- 如果无法启动连接器服务器。
- 如果在构造函数中提供了
-
stop
停用连接器服务器,即停止监听客户端连接。调用此方法还将关闭此服务器创建的所有客户端连接。此方法返回后,无论是正常返回还是异常返回,连接器服务器都不会创建任何新的客户端连接。
一旦连接器服务器已停止,就无法再次启动它。
当连接器服务器已经停止时调用此方法不会产生任何效果。当连接器服务器尚未启动时调用此方法将永久禁用连接器服务器对象。
如果关闭客户端连接产生异常,则此方法不会抛出异常。从此方法中发出一个
JMXConnectionNotification
,其中包含无法关闭的连接的连接ID。关闭连接器服务器是一个潜在的缓慢操作。例如,如果具有打开连接的客户端机器崩溃,关闭操作可能需要等待网络协议超时。不希望在关闭操作中阻塞的调用者应该在单独的线程中执行。
此方法调用连接器服务器的
RMIServerImpl
对象的close
方法。如果
RMIServerImpl
通过start
方法绑定到JNDI目录,则此方法将通过此方法从目录中解除绑定RMIServerImpl
。- 抛出:
-
IOException
- 如果服务器无法干净地关闭,或者RMIServerImpl
无法从目录中解绑。当抛出此异常时,服务器已尝试关闭所有客户端连接(如果适用);调用RMIServerImpl.close()
;并解绑RMIServerImpl
从其目录(如果适用)。所有客户端连接都已关闭,除非在服务器尝试关闭它们时生成异常。
-
isActive
public boolean isActive()从接口中复制的描述:JMXConnectorServerMBean
- 返回:
- 如果连接器服务器处于活动状态,则为true。
-
getAddress
从接口中复制的描述:JMXConnectorServerMBean
此连接器服务器的地址。
返回的地址可能不是创建连接器服务器时提供的确切原始
JMXServiceURL
,因为原始地址可能并非始终完整。例如,启动连接器服务器时可能会动态分配端口号。相反,返回的地址是JMXServiceURL
的实际JMXConnectorServer
的地址。这是客户端提供给JMXConnectorFactory.connect(JMXServiceURL)
的地址。请注意,如果
JMXConnectorServer
尚未active
,则返回的地址可能为null
。- 返回:
- 此连接器服务器的地址,如果没有则返回null。
-
getAttributes
从接口复制的描述:JMXConnectorServerMBean
此连接器服务器的属性。
- 返回:
- 包含此连接器服务器属性的只读映射。值不可序列化的属性将从此映射中省略。如果没有可序列化属性,则返回的映射为空。
-