- java.lang.Object
-
- javax.management.NotificationBroadcasterSupport
-
- javax.management.remote.JMXConnectorServer
-
- javax.management.remote.rmi.RMIConnectorServer
-
- 实现的所有接口
-
MBeanRegistration
,NotificationBroadcaster
,NotificationEmitter
,JMXAddressable
,JMXConnectorServerMBean
public class RMIConnectorServer extends JMXConnectorServer
JMX API连接器服务器,用于从远程客户端创建基于RMI的连接。 通常,此类连接器服务器使用
JMXConnectorServerFactory
制造 。 但是,专门的应用程序可以直接使用此类,例如使用RMIServerImpl
对象。- 从以下版本开始:
- 1.5
-
-
字段汇总
字段 变量和类型 字段 描述 static String
CREDENTIAL_TYPES
不推荐使用,要删除:此API元素将在以后的版本中删除。static String
CREDENTIALS_FILTER_PATTERN
指定ObjectInputFilter
模式字符串的属性的名称,以过滤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
的属性的名称。static String
SERIAL_FILTER_PATTERN
此属性定义一个模式,用于创建ObjectInputFilter
,在反序列化任何客户端发送到JMXConnectorServer
的对象时将使用该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
。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 void
start()
激活连接器服务器,即开始侦听客户端连接。void
stop()
停用连接器服务器,即停止侦听客户端连接。JMXConnector
toJMXConnector(Map<String,?> env)
返回此连接器服务器的客户端存根。-
声明方法的类 javax.management.remote.JMXConnectorServer
connectionClosed, connectionFailed, connectionOpened, getMBeanServer, getNotificationInfo, preDeregister, preRegister
-
声明方法的类 javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, sendNotification
-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 javax.management.remote.JMXAddressable
getAddress
-
声明方法的接口 javax.management.remote.JMXConnectorServerMBean
getAddress, getAttributes, getConnectionIds, isActive, setMBeanServerForwarder
-
声明方法的接口 javax.management.MBeanRegistration
postDeregister, postRegister
-
声明方法的接口 javax.management.NotificationBroadcaster
removeNotificationListener
-
声明方法的接口 javax.management.NotificationEmitter
removeNotificationListener
-
-
-
-
字段详细信息
-
JNDI_REBIND_ATTRIBUTE
public static final String JNDI_REBIND_ATTRIBUTE
指定代表RMI连接器服务器的
RMIServer
存根是否应覆盖同一地址的现有存根的属性的名称。 与此属性关联的值(如果有)应该是相等的字符串,忽略大小写,为"true"
或"false"
。 默认值为false。- 另请参见:
- 常数字段值
-
RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
public static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
为此连接器创建的RMI对象指定
RMIClientSocketFactory
的属性的名称。 与此属性关联的值必须为RMIClientSocketFactory
类型,并且只能在创建连接器服务器时提供的Map
参数中指定。- 另请参见:
- 常数字段值
-
RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
public static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
为此连接器创建的RMI对象指定
RMIServerSocketFactory
的属性的名称。 与此属性关联的值必须为RMIServerSocketFactory
类型,并且只能在创建连接器服务器时提供的Map
参数中指定。- 另请参见:
- 常数字段值
-
CREDENTIAL_TYPES
@Deprecated(since="10", forRemoval=true) public static final String CREDENTIAL_TYPES
Deprecated, for removal: This API element is subject to removal in a future version.UseCREDENTIALS_FILTER_PATTERN
with a filter pattern string instead.指定可作为RMIServer.newClient()
远程方法调用的参数接受的类名列表的属性的名称。此类列表应对应于与RMIServer实现关联的已安装JMXAuthenticator使用的凭证类(或多个类)的传递闭包。
如果未设置该属性,或者为null,则认为任何类都是可接受的。
- 另请参见:
- 常数字段值
-
CREDENTIALS_FILTER_PATTERN
public static final String CREDENTIALS_FILTER_PATTERN
指定ObjectInputFilter
模式字符串的属性的名称,以过滤RMIServer.newClient()
远程方法调用可接受的类。过滤器模式必须与
ObjectInputFilter.Config.createFilter(java.lang.String)
中使用的格式相同过滤器允许的此类列表应对应于与RMIServer实现关联的已安装JMXAuthenticator使用的凭证类(或多个类)的传递闭包。 如果未设置该属性,则认为任何类都是可接受的。
- 另请参见:
-
ObjectInputFilter
, 常数字段值
-
SERIAL_FILTER_PATTERN
public static final String SERIAL_FILTER_PATTERN
此属性定义一个模式,用于创建ObjectInputFilter
,在反序列化任何客户端发送到JMXConnectorServer
的对象时将使用该JMXConnectorServer
。将为客户端发送到服务器的序列化流中找到的任何类调用过滤器,包括所有JMX定义的类(例如
ObjectName
),所有方法参数,以及(如果存在于流中)串行表单传递的所有类任何反序列化的对象。 模式必须与ObjectInputFilter.Config.createFilter(java.lang.String)
中使用的格式相同。 它可以定义允许类的白名单,被拒绝类的黑名单,反序列化对象的最大深度等。为了起作用,在序列化
RMIConnection
接口中作为参数引用的所有JMX类时,过滤器应至少允许所有可能被序列化的对象的传递闭包中的所有具体类型,以及client
可能需要传输的所有类。 marshalled objects ,以便与在已注册的MBean进行互操作MBeanServer
。 这可能包括所有具体的JMX OpenTypes以及他们以串行形式使用的类。在定义这样的过滤器时必须小心,因为定义白名单限制性太强或黑名单太宽可能会阻止合法客户端与
JMXConnectorServer
互操作。- 另请参见:
- 常数字段值
-
-
构造方法详细信息
-
RMIConnectorServer
public RMIConnectorServer(JMXServiceURL url, Map<String,?> environment) throws IOException
制作
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接口的实现,与url中指定的协议类型一致。 如果此参数为非null,则url指定的协议类型不受约束,并且假定为有效。 否则,只会识别“rmi”。 -
mbeanServer
- 新连接器服务器所连接的MBean服务器,如果通过在MBean服务器中注册为MBean来附加它,则为null。 - 异常
-
IllegalArgumentException
- 如果url
为空。 -
MalformedURLException
- 如果url
不符合RMI连接器的语法,或者此实现无法识别其协议。 当rmiServerImpl为null时,仅识别“rmi”。 -
IOException
- 如果由于某种原因无法创建连接器服务器,或者其start
方法不可避免地会失败。 - 另请参见:
-
start()
-
-
方法详细信息
-
toJMXConnector
public JMXConnector toJMXConnector(Map<String,?> env) throws IOException
返回此连接器服务器的客户端存根。 客户端存根是一个可序列化的对象,其
connect
方法可用于与此连接器服务器建立一个新连接。- Specified by:
-
toJMXConnector
在界面JMXConnectorServerMBean
- 重写:
-
toJMXConnector
类JMXConnectorServer
- 参数
-
env
- 可提供给JMXConnector.connect(Map)
的相同类型的客户端连接参数。 可以为null,相当于空映射。 - 结果
- 客户端存根,可用于与此连接器服务器建立新连接。
- 异常
-
UnsupportedOperationException
- 如果此连接器服务器不支持生成客户端存根。 -
IllegalStateException
- 如果未启动JMXConnectorServer(请参阅JMXConnectorServerMBean.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路径中(由JMXConnectorServerMBean.getAddress()
返回)。 用于编码rmi
在封装文档中所描述javax.management.remote.rmi
。URL路径既不为空也不是JNDI目录URL或协议不是
rmi
时的rmi
是实现定义的,可能包括在创建连接器服务器时或启动时抛出MalformedURLException
。- 异常
-
IllegalStateException
- 如果连接器服务器尚未连接到MBean服务器。 -
IOException
- 如果无法启动连接器服务器。
- 如果为构造函数提供了
-
stop
public void stop() throws IOException
停用连接器服务器,即停止侦听客户端连接。 调用此方法还将关闭此服务器所做的所有客户端连接。 在此方法返回后,无论是正常还是异常,连接器服务器都不会创建任何新的客户端连接。
连接器服务器停止后,无法再次启动。
连接器服务器已停止时调用此方法无效。 在尚未启动连接器服务器时调用此方法将永久禁用连接器服务器对象。
如果关闭客户端连接会产生异常,则不会从此方法抛出该异常。 从此MBean发出
JMXConnectionNotification
,其连接ID无法关闭。关闭连接器服务器可能会很慢。 例如,如果具有打开连接的客户端计算机已崩溃,则关闭操作可能必须等待网络协议超时。 不希望在关闭操作中阻塞的调用者应该在单独的线程中执行。
此方法调用连接器服务器的
RMIServerImpl
对象上的方法close
。如果
RMIServerImpl
通过start
方法绑定到JNDI目录,则通过此方法从目录中解除绑定。- 异常
-
IOException
- 如果服务器无法干净地关闭,或者RMIServerImpl
无法从目录中解除绑定。 抛出此异常时,服务器已尝试关闭所有客户端连接(如果适用); 致电RMIServerImpl.close()
; 如果合适,从目录中取消绑定RMIServerImpl
。 所有客户端连接都将关闭,但可能是那些在服务器尝试关闭它们时生成异常的连接。
-
-