public class JMXServiceURL extends Object implements Serializable
JMX API连接器服务器的地址。 这个类的实例是不可变的。
该地址是SLP的抽象服务URL ,如RFC 2609中定义并由RFC 3111修改。它必须如下所示:
service:jmx:protocol:sap
这里, protocol
是用于连接到连接器服务器的传输协议。 它是一个或多个ASCII字符的字符串,每个字符都是字母,数字或字符+
或-
。 第一个字符必须是一个字母。 大写字母转换为小写字母。
sap
是找到连接器服务器的地址。 该地址使用RFC 2609为基于IP的协议定义的语法的子集。 它是一个子集,因为不支持user@host
语法。
RFC 2609定义的其他语法目前不受此类支持。
支持的语法是:
//[host[:port]][url-path]
方括号[]
表示地址的可选部分。 并非所有协议都将识别所有可选部件。
host
是一个主机名,一个IPv4数字主机地址或一个包含在方括号中的IPv6数字地址。
port
是十进制端口号。 0表示默认或匿名端口,具体取决于协议。
host
和port
可以省略。 port
无法提供host
。
url-path
(如果有)以斜杠( /
)或分号( ;
)开头,并继续到地址的末尾。 它可以使用RFC 2609中指定的分号语法来包含属性。这些属性不被此类解析,并且未检测到不正确的属性语法。
虽然根据RFC 2609具有以url-path
开头的url-path是合法的,但SLP的所有实现都不允许它,因此建议避免使用该语法。
案例在初始service:jmx:protocol
字符串或地址的主机部分service:jmx:protocol
。 根据协议,案例可以在url-path中url-path
。
Constructor and Description |
---|
JMXServiceURL(String serviceURL)
通过解析服务URL字符串构造一个
JMXServiceURL 。
|
JMXServiceURL(String protocol, String host, int port)
使用给定的协议,主机和端口构造一个
JMXServiceURL 。
|
JMXServiceURL(String protocol, String host, int port, String urlPath)
构造一个
JMXServiceURL 与给定的部分。
|
public JMXServiceURL(String serviceURL) throws MalformedURLException
通过解析服务URL字符串构造一个JMXServiceURL
。
serviceURL
- 要解析的URL字符串。
NullPointerException
- 如果
serviceURL
为空。
MalformedURLException
- 如果serviceURL
不符合抽象服务URL的语法,或者它不是JMX Remote API服务的有效名称。
A JMXServiceURL
必须以字符串"service:jmx:"
(不区分大小写)。
它不能包含任何不可打印的ASCII字符的字符。
public JMXServiceURL(String protocol, String host, int port) throws MalformedURLException
使用给定的协议,主机和端口构造一个JMXServiceURL
。 该构造函数相当于JMXServiceURL(protocol, host, port, null)
。
protocol
- URL的协议部分。
如果为null,则默认为jmxmp
。
host
- 网址的主机部分。
如果为null,则默认为本地主机名,由InetAddress.getLocalHost().getHostName()
。
如果是数字IPv6地址,则可以选择括在方括号[]
。
port
- URL的端口部分。
MalformedURLException
- 如果其中一个部分在语法上不正确,或者如果
host
为空,并且无法找到本地主机名,或者如果
port
为负。
public JMXServiceURL(String protocol, String host, int port, String urlPath) throws MalformedURLException
构造一个JMXServiceURL
与给定的部分。
protocol
- 协议的URL部分。
如果为null,则默认为jmxmp
。
host
- 网址的主机部分。
如果为null,则默认为本地主机名,由InetAddress.getLocalHost().getHostName()
。
如果它是一个数字的IPv6地址,它可以选择括在方括号[]
。
port
- URL的端口部分。
urlPath
- URL的URL路径部分。
如果为空,则默认为空字符串。
MalformedURLException
- 如果其中一个部分在语法上不正确,或者如果
host
为空,并且无法找到本地主机名,或者如果
port
为负。
public String getProtocol()
服务网址的协议部分。
public String getHost()
服务网址的主机部分。 如果使用构造函数构造服务URL,该构造函数使用URL字符串参数,那么结果是指定该URL中的主机的子字符串。 如果使用构造函数构造服务URL,该构造函数采用单独的主机参数,则结果是指定的字符串。 如果该字符串为空,则结果为InetAddress.getLocalHost().getHostName()
。
在任一情况下,如果使用数字IPv6地址的[...]
语法指定了主机,则此处的返回值中不包括方括号。
public int getPort()
服务网址的端口。 如果没有指定端口,返回值为0。
public String getURLPath()
服务网址的URL路径部分。 这是一个空字符串,或某个字符串开头以斜线( /
),或用分号(开头的字符串;
)。
public String toString()
public boolean equals(Object obj)
指示一些其他对象是否等于此。 当且仅当此方法返回true obj
是一个实例JMXServiceURL
其getProtocol()
, getHost()
, getPort()
和getURLPath()
种方法返回相同的值作为该对象。 getProtocol()
和getHost()
的值在不影响相等性的情况下可能不同。
equals
在
Object
obj
- 用于比较的参考对象。
true
如果此对象与obj
参数相同;
false
否则。
Object.hashCode()
, HashMap
public int hashCode()
Object
HashMap
提供的那些表。
hashCode
的总合同是:
hashCode
方法必须始终返回相同的整数,前提是修改了对象中equals
比较中没有使用的equals
。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。 equals(Object)
方法相等,则在两个对象中的每个对象上调用hashCode
方法必须产生相同的整数结果。 Object.equals(java.lang.Object)
方法不相等,那么在两个对象中的每个对象上调用hashCode
方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。 尽可能多的合理实用,由类Object
定义的hashCode方法确实为不同对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java的编程语言不需要此实现技术。)
hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)