- 所有已实现的接口:
MBeanRegistration
,NotificationBroadcaster
,NotificationEmitter
,JMXAddressable
,JMXConnectorServerMBean
一个 JMX API 连接器服务,它从远程客户端创建基于 RMI 的连接。通常,此类连接器服务是使用 JMXConnectorServerFactory
制作的。但是,专门的应用程序可以直接使用此类,例如使用 RMIServerImpl
对象。
- 自从:
- 1.5
-
字段摘要
字段修饰符和类型Field描述static final String
指定ObjectInputFilter
模式字符串以过滤RMIServer.newClient()
远程方法调用可接受的类的属性名称。static final String
指定表示 RMI 连接器服务的RMIServer
存根是否应覆盖同一地址的现有存根的属性名称。static final String
为与此连接器一起创建的 RMI 对象指定RMIClientSocketFactory
的属性名称。static final String
为与此连接器一起创建的 RMI 对象指定RMIServerSocketFactory
的属性名称。static final String
此属性定义了一个模式,从中创建一个ObjectInputFilter
将在反序列化任何客户端发送到JMXConnectorServer
的对象时使用。在类 javax.management.remote.JMXConnectorServer 中声明的字段
AUTHENTICATOR
-
构造方法总结
构造方法构造方法描述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
。 -
方法总结
在类 javax.management.remote.JMXConnectorServer 中声明的方法
connectionClosed, connectionFailed, connectionOpened, getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister, setMBeanServerForwarder
在类 javax.management.NotificationBroadcasterSupport 中声明的方法
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
-
字段详细信息
-
JNDI_REBIND_ATTRIBUTE
指定表示 RMI 连接器服务的
RMIServer
存根是否应覆盖同一地址的现有存根的属性名称。与此属性关联的值(如果有)应该是一个等于"true"
或"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)
中使用的格式相同。它可以定义允许类的允许列表、拒绝类的拒绝列表、反序列化对象的最大深度等。为了发挥作用,过滤器应该至少允许所有对象的传递闭包中的所有具体类型,这些对象在序列化
RMIConnection
接口中称为参数的所有 JMX 类时可能被序列化,加上client
可能需要传输的所有类编组对象 以便与MBeanServer
中注册的 MBean 进行互操作。这可能包括所有具体的 JMX OpenTypes 和它们以串行形式使用的类。定义此类过滤器时必须小心,因为定义太窄的允许列表或太宽的拒绝列表可能会阻止合法客户端与
JMXConnectorServer
进行互操作。- 参见:
-
-
构造方法详细信息
-
RMIConnectorServer
制作一个
RMIConnectorServer
。这相当于调用RMIConnectorServer(directoryURL,environment,null,null)
- 参数:
url
- 定义如何创建连接器服务的 URL。不能为空。environment
- 管理 RMI 对象的创建和存储的属性。可以为null,相当于一个空的Map。- 抛出:
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 对象的创建和存储的属性。可以为null,相当于一个空的Map。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 对象的创建和存储的属性。可以为null,相当于一个空的Map。rmiServerImpl
- RMIServer接口的实现,与指定的协议类型一致网址.如果该参数不为空,则为指定的协议类型网址不受约束,并假定为有效。否则,只会识别“rmi”。mbeanServer
- 新连接器服务附加到的 MBean 服务,如果它将通过在 MBean 服务中注册为 MBean 来附加,则为 null。- 抛出:
IllegalArgumentException
- 如果url
为空。MalformedURLException
- 如果url
不符合 RMI 连接器的语法,或者如果此实现无法识别其协议。只有“rmi”被识别时rmiServerImpl一片空白。IOException
- 如果由于某种原因无法创建连接器服务,或者它的start
方法不可避免地会失败。- 参见:
-
-
方法详情
-
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 地址(由getAddress()
返回)的 URL 路径中编码。rmi
的编码在javax.management.remote.rmi
的包文档中进行了描述。当 URL 路径既不是空的也不是 JNDI 目录 URL 或协议不是
rmi
时的行为是实现定义的,并且可能包括在连接器服务创建或启动时抛出MalformedURLException
。- 抛出:
IllegalStateException
- 如果连接器服务尚未连接到 MBean 服务。IOException
- 如果无法启动连接器服务。
- 如果将
-
stop
停用连接器服务,即停止监听客户端连接。调用此方法还将关闭此服务建立的所有客户端连接。此方法返回后,无论是正常还是异常,连接器服务都不会创建任何新的客户端连接。
连接器服务一旦停止,就无法再次启动。
在连接器服务已停止时调用此方法无效。在连接器服务尚未启动时调用此方法将永久禁用连接器服务对象。
如果关闭客户端连接产生异常,则该方法不会抛出该异常。一个
JMXConnectionNotification
从此 MBean 发出,带有无法关闭的连接的连接 ID。关闭连接器服务是一个可能很慢的操作。例如,如果打开连接的客户端机器崩溃了,关闭操作可能必须等待网络协议超时。不想阻塞关闭操作的调用者应该在单独的线程中执行。
此方法调用连接器服务的
RMIServerImpl
对象上的方法close
。如果
RMIServerImpl
已通过start
方法绑定到 JNDI 目录,则它会通过此方法从目录中解除绑定。- 抛出:
IOException
- 如果服务无法完全关闭,或者如果RMIServerImpl
无法从目录中解除绑定。抛出此异常时,服务已经尝试关闭所有客户端连接(如果合适);打电话给RMIServerImpl.close()
;并在适当的情况下从其目录中取消绑定RMIServerImpl
。所有客户端连接都已关闭,除了那些在服务试图关闭它们时可能生成异常的连接。
-
isActive
public boolean isActive()从接口JMXConnectorServerMBean
复制的描述- 返回:
- 如果连接器服务处于活动状态,则为真。
-
getAddress
从接口JMXConnectorServerMBean
复制的描述此连接器服务的地址。
返回的地址可能与创建连接器服务时提供的原始地址不完全相同,因为原始地址可能并不总是完整的。例如,端口号可以在启动连接器服务时动态分配。相反,返回的地址是
JMXConnectorServer
的实际JMXServiceURL
。这是客户端提供给JMXConnectorFactory.connect(JMXServiceURL)
的地址。请注意,如果
JMXConnectorServer
还不是active
,则返回的地址可能是null
。- 返回:
- 此连接器服务的地址,如果没有,则为 null。
-
getAttributes
从接口JMXConnectorServerMBean
复制的描述此连接器服务的属性。
- 返回:
- 包含此连接器服务属性的只读映射。此map中省略了其值不可序列化的属性。如果没有可序列化的属性,则返回的映射为空。
-