Module  java.management

Class JMXServiceURL

  • All Implemented Interfaces:
    Serializable


    public class JMXServiceURL
    extends Object
    implements Serializable

    JMX API连接器服务器的地址。 这个类的实例是不可变的。

    该地址是SLP的抽象服务URL ,如RFC 2609中定义并由RFC 3111修改。它必须如下所示:

    service:jmx:protocol:sap

    这里, protocol是用于连接到连接器服务器的传输协议。 它是一个或多个ASCII字符的字符串,每个ASCII字符都是字母,数字或字符+- 第一个字符必须是一个字母。 大写字母转换为小写字母。

    sap是找到连接器服务器的地址。 该地址使用RFC 2609为基于IP的协议定义的语法的子集。 它是一个子集,因为不支持user@host语法。

    RFC 2609定义的其他语法目前不受此类支持。

    支持的语法是:

    //[host[:port]][url-path]

    方括号[]表示地址的可选部分。 并非所有协议都将识别所有可选部件。

    host是主机名,IPv4数字主机地址或括在方括号内的IPv6数字地址。

    port是一个小数端口号。 0表示默认或匿名端口,具体取决于协议。

    hostport可以省略。 port不能提供host

    url-path (如果有)以斜杠( / )或分号( ; )开始,并继续到地址的结尾。 它可以使用RFC 2609中指定的分号语法来包含属性。这些属性不被此类解析,并且未检测到不正确的属性语法。

    虽然根据RFC 2609具有以分号开头的url-path是合法的,但SLP的所有实现都不允许它,因此建议避免使用该语法。

    在初始的service:jmx:protocol字符串或地址的主机部分中,情况并不重要。 根据协议,情况可能在url-path

    从以下版本开始:
    1.5
    另请参见:
    RFC 2609, "Service Templates and Service: Schemes"RFC 3111, "Service Location Protocol Modifications for IPv6"Serialized Form
    • 构造方法详细信息

      • JMXServiceURL

        public JMXServiceURL​(String serviceURL)
                      throws MalformedURLException

        通过解析服务URL字符串构造JMXServiceURL

        参数
        serviceURL - 要解析的URL字符串。
        异常
        NullPointerException - 如果 serviceURL为空。
        MalformedURLException - 如果serviceURL不符合抽象服务URL的语法,或者它不是JMX Remote API服务的有效名称。 A JMXServiceURL必须以字符串"service:jmx:" (不区分大小写)。 它不能包含任何不可打印ASCII字符的字符。
      • JMXServiceURL

        public JMXServiceURL​(String protocol,
                             String host,
                             int port)
                      throws MalformedURLException

        使用给定的协议,主机和端口构造一个JMXServiceURL 该构造函数相当于JMXServiceURL(protocol, host, port, null)

        参数
        protocol - URL的协议部分。 如果为null,则默认为jmxmp
        host - 网址的主机部分。 如果主机为空,并且如果本地主机名可以解析为IP,则主机默认为本地主机名,由InetAddress.getLocalHost().getHostName()确定。 如果主机为空,并且如果本地主机名无法解析为IP,则主机默认为其中一个活动网络接口的数字IP地址。 如果主机是数字IPv6地址,则可以选择括在方括号[]
        port - URL的端口部分。
        异常
        MalformedURLException - 如果其中一个部分在语法上不正确,或者如果 host为空,并且无法找到本地主机名,或者如果 port为负。
      • JMXServiceURL

        public JMXServiceURL​(String protocol,
                             String host,
                             int port,
                             String urlPath)
                      throws MalformedURLException

        构造一个JMXServiceURL与给定的部分。

        参数
        protocol - 协议部分的URL。 如果为null,则默认为jmxmp
        host - 网址的主机部分。 如果主机为空,并且如果本地主机名可以解析为IP,则主机默认为本地主机名,由InetAddress.getLocalHost().getHostName()确定。 如果主机为空,并且如果本地主机名无法解析为IP,则主机默认为其中一个活动网络接口的数字IP地址。 如果主机是数字IPv6地址,则可以选择括在方括号[]
        port - URL的端口部分。
        urlPath - URL的URL路径部分。 如果为空,则默认为空字符串。
        异常
        MalformedURLException - 如果其中一个部分在语法上不正确,或者如果 host为空,并且不可能找到本地主机名,或者如果 port为负数。
    • 方法详细信息

      • getProtocol

        public String getProtocol​()

        服务网址的协议部分。

        结果
        服务网址的协议部分。 这从来不为空。
      • getHost

        public String getHost​()

        服务网址的主机部分。 如果使用构造函数构造服务URL,该构造函数使用URL字符串参数,那么结果是指定该URL中的主机的子字符串。 如果使用构造函数构造服务URL,该构造函数采用单独的主机参数,则结果是指定的字符串。 如果该字符串为空,则如果本地主机名可以解析为IP,则结果为InetAddress.getLocalHost().getHostName() 将使用活动网络接口的其他数字IP地址。

        在任一情况下,如果使用数字IPv6地址的[...]语法指定了主机,则此处的返回值中不包括方括号。

        结果
        服务网址的主机部分。 这从来不为空。
      • getPort

        public int getPort​()

        服务网址的端口。 如果没有指定端口,返回值为0。

        结果
        服务URL的端口,如果没有,则为0。
      • getURLPath

        public String getURLPath​()

        服务网址的URL路径部分。 这是一个空字符串或以斜杠( / )开头的字符串,或以分号( ; )开头的字符串。

        结果
        服务网址的URL路径部分。 这从来不为空。
      • toString

        public String toString​()

        此服务网址的字符串表示形式。 如果将此方法返回的值提供给JMXServiceURL构造函数,则生成的对象等于此。

        返回的字符串的host部分是由getHost()返回的值。 如果该值指定了一个数字的IPv6地址,它就被方括号[]包围。

        返回的字符串的port部分是getPort()以最小十进制形式返回的值。 如果值为零,则省略。

        重写:
        toStringObject
        结果
        此服务网址的字符串表示形式。
      • hashCode

        public int hashCode​()
        描述从类别复制Object
        返回对象的哈希码值。 支持这种方法是为了哈希表的利益,如HashMap提供的。

        hashCode的总合同是:

        • 无论何时在执行Java应用程序时多次在同一对象上调用该对象,则hashCode方法必须始终返回相同的整数,前提是修改了对象中equals比较中的信息。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。
        • 如果根据equals(Object)方法两个对象相等,则在两个对象中的每个对象上调用hashCode方法必须产生相同的整数结果。
        • 要求如果两个对象根据Object.equals(java.lang.Object)方法不相等,那么在两个对象中的每个对象上调用hashCode方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。

        尽可能多的合理实用,由类Object定义的hashCode方法确实为不同对象返回不同的整数。 (在某个时间点,hashCode可能或可能不被实现为对象的存储器地址的某些功能。)

        重写:
        hashCodeObject
        结果
        该对象的哈希码值。
        另请参见:
        Object.equals(java.lang.Object)System.identityHashCode(java.lang.Object)