- 所有已实现的接口:
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中省略了其值不可序列化的属性。如果没有可序列化的属性,则返回的映射为空。
-