Class RMIConnectorServer

    • 字段详细信息

      • 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参数中指定。

        另请参见:
        常数字段值
      • 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,
                                  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()
    • 方法详细信息

      • 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 所有客户端连接都将关闭,但可能是那些在服务器尝试关闭它们时生成异常的连接。