Класс ObjectName
- Все реализуемые интерфейсы:
-
Serializable,Comparable<ObjectName>,QueryExp
public class ObjectName extends Object implements Comparable<ObjectName>, QueryExp
Представляет имя объекта MBean или шаблон, который может соответствовать именам нескольких MBeans. Экземпляры этого класса неизменяемы.
Экземпляр этого класса может использоваться для представления:
- Имени объекта
- Шаблона имени объекта в контексте запроса
Имя объекта состоит из двух частей: домена и ключевых свойств.
Домен — это строка символов, не включающая символ двоеточия (:). Рекомендуется, чтобы домен не содержал строку "//", которая зарезервирована для будущего использования.
Если домен включает по крайней мере один символ подстановки — звездочку (*) или знак вопроса (?), то имя объекта является шаблоном. Звездочка соответствует любой последовательности из нуля или более символов, а знак вопроса — любому одиночному символу.
Если домен пустой, он будет заменён в определённых контекстах домен по умолчанию сервера MBean, в котором используется ObjectName.
Ключевые свойства — это неупорядоченный набор ключей и соответствующих значений.
Каждый ключ — это непустая строка символов, которая не может содержать запятую (,), знак равенства (=), двоеточие, звездочку или знак вопроса. Один и тот же ключ не может встречаться дважды в данном ObjectName.
Каждое значение, связанное с ключом, — это строка символов, которая может быть нецитированной или цитированной.
Нецитированное значение — это, возможно, пустая строка символов, которая не может содержать запятую, знак равенства, двоеточие или кавычку.
Если нецитированное значение содержит по крайней мере один символ подстановки — звездочку или знак вопроса, то имя объекта является шаблоном значения свойства. Звездочка соответствует любой последовательности из нуля или более символов, а знак вопроса — любому одиночному символу.
Цитированное значение состоит из кавычки ("), за которой следует, возможно, пустая строка символов, а затем ещё одна кавычка. Внутри строки символов обратный слэш (\) имеет специальное значение. Он должен быть после одного из следующих символов:
- Другой обратный слэш. Второй обратный слэш не имеет специального значения, и оба символа представляют один обратный слэш.
- Символ 'n'. Два символа представляют новую строку ('\n' в Java).
- Кавычка. Два символа представляют кавычку, и эта кавычка не считается окончанием цитированного значения. Для валидности цитированного значения должна присутствовать конечная закрывающая кавычка.
- Знак вопроса (?) или звездочка (*). Два символа представляют знак вопроса или звездочку соответственно.
Кавычка не может появляться внутри цитированного значения, кроме как сразу после нечётного числа последовательных обратных слэшей.
Кавычки, окружающие цитированное значение, и все обратные слэши внутри этого значения, считаются частью значения.
Если цитированное значение содержит по крайней мере один символ подстановки — звездочку или знак вопроса, и они не предваряются обратным слэшем, то они считаются символами подстановки, и имя объекта является шаблоном значения свойства. Звездочка соответствует любой последовательности из нуля или более символов, а знак вопроса — любому одиночному символу.
ObjectName может быть шаблоном списка свойств. В этом случае он может иметь ноль или более ключей и соответствующих значений. Он соответствует нешаблонному ObjectName, чей домен совпадает и который содержит те же ключи и соответствующие значения, а также, возможно, другие ключи и значения.
ObjectName является шаблоном значения свойства, когда по крайней мере одно из его цитированных или нецитированных значений свойства ключа содержит символы подстановки звездочку или знак вопроса, как описано выше. В этом случае у него есть один или более ключей и соответствующих значений, причём по крайней мере одно из значений содержит символы подстановки. Он соответствует нешаблонному ObjectName, чей домен совпадает и который содержит те же ключи, значения которых соответствуют; если шаблон значения свойства также является шаблоном списка свойств, то нешаблонный ObjectName может содержать другие ключи и значения.
ObjectName является шаблоном свойства, если он является либо шаблоном списка свойств, либо шаблоном значения свойства, или обоими.
ObjectName является шаблоном, если его домен содержит символ подстановки или если ObjectName является шаблоном свойства.
Если ObjectName не является шаблоном, он должен содержать по крайней мере один ключ со своим соответствующим значением.
Примеры шаблонов ObjectName:
-
*:type=Foo,name=Barдля соответствия именам в любом домене, чья точная последовательность ключей —type=Foo,name=Bar. -
d:type=Foo,name=Bar,*для соответствия именам в доменеd, которые имеют ключиtype=Foo,name=Barплюс ноль или более других ключей. -
*:type=Foo,name=Bar,*для соответствия именам в любом домене, у которого есть ключиtype=Foo,name=Barплюс ноль или более других ключей. -
d:type=F?o,name=Barбудет соответствовать, например,d:type=Foo,name=Barиd:type=Fro,name=Bar. -
d:type=F*o,name=Barбудет соответствовать, например,d:type=Fo,name=Barиd:type=Frodo,name=Bar. -
d:type=Foo,name="B*"будет соответствовать, например,d:type=Foo,name="Bling". Символы подстановки распознаются даже внутри кавычек, и, как и другие специальные символы, могут быть экранированы с помощью\.
ObjectName может быть записан в виде строки со следующими элементами в порядке:
- Домен.
- Двоеточие (
:). - Список ключевых свойств, как определено ниже.
Список ключевых свойств, записанный в виде строки, — это список элементов, разделённых запятыми. Каждый элемент — это либо звездочка, либо свойство ключа. Свойство ключа состоит из ключа, знака равенства (=) и связанного значения.
Максимум один элемент списка ключевых свойств может быть звездочкой. Если список ключевых свойств содержит элемент звездочку, ObjectName является шаблоном списка свойств.
Пробелы не имеют специального значения в строке, представляющей ObjectName. Например, строка:
domain: key1 = value1 , key2 = value2представляет ObjectName с двумя ключами. Имя каждого ключа содержит шесть символов, из которых первый и последний — пробелы. Значение, связанное с ключом
" key1 ", также начинается и заканчивается пробелом. В дополнение к ограничениям на символы, указанным выше, ни одна часть ObjectName не может содержать символ новой строки ('\n'), будь то домен, ключ или значение, цитированное или нет. Символ новой строки может быть представлен в цитированном значении последовательностью \n.
Правила относительно специальных символов и цитирования применяются независимо от того, какой конструктор используется для создания ObjectName.
Чтобы избежать коллизий между MBeans, поставляемыми разными поставщиками, полезно начинать имя домена с обратного DNS-имени организации, которая указывает MBeans, за которым следует точка и строка, интерпретация которой определяется этой организацией. Например, MBeans, заданные example.com, будут иметь домены, такие как com.example.MyDomain. Это в основном та же конвенция, что и для имён пакетов на языке Java.
serialVersionUID этого класса — 1081892073854801359L.
- Примечание по реализации:
- Максимальная разрешённая длина имени домена в данной реализации —
Integer.MAX_VALUE/4 - С:
- 1.5
- См. также:
Краткое описание полей
| Modifier and Type | Field | Description |
|---|---|---|
static final ObjectName |
WILDCARD |
Определяет объект с подстановочным знаком "*:*" ObjectName. |
Краткое описание конструкторов
| Constructor | Description |
|---|---|
ObjectName |
Создает имя объекта из заданной строки. |
ObjectName |
Создает имя объекта с ровно одним свойством ключа. |
ObjectName |
Создает имя объекта со многими свойствами ключей из Hashtable. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
boolean |
apply |
Проверяет, соответствует ли этот ObjectName, который может быть шаблоном, другому ObjectName. |
int |
compareTo |
Сравнивает два экземпляра ObjectName. |
boolean |
equals |
Сравнивает текущее имя объекта с другим именем объекта. |
String |
getCanonicalKeyPropertyListString() |
Возвращает строковое представление списка свойств ключей, в котором свойства ключей отсортированы в лексикографическом порядке. |
String |
getCanonicalName() |
Возвращает каноническую форму имени; то есть строковое представление, где свойства отсортированы в лексикографическом порядке. |
String |
getDomain() |
Возвращает доменную часть. |
static ObjectName |
getInstance |
Возвращает экземпляр ObjectName, который можно использовать везде, где можно использовать объект, полученный с помощью new
ObjectName(name). |
static ObjectName |
getInstance |
Возвращает экземпляр ObjectName, который можно использовать везде, где можно использовать объект, полученный с помощью new ObjectName(domain, key, value). |
static ObjectName |
getInstance |
Возвращает экземпляр ObjectName, который можно использовать везде, где можно использовать объект, полученный с помощью new ObjectName(domain, table). |
static ObjectName |
getInstance |
Возвращает экземпляр ObjectName, который можно использовать везде, где можно использовать данный объект. |
String |
getKeyProperty |
Получает значение, связанное с ключом в свойстве ключа. |
Hashtable |
getKeyPropertyList() |
Возвращает свойства ключей в виде Hashtable. |
String |
getKeyPropertyListString() |
Возвращает строковое представление списка свойств ключей, указанных при создании. |
int |
hashCode() |
Возвращает код хэша для этого имени объекта. |
boolean |
isDomainPattern() |
Проверяет, является ли имя объекта шаблоном для доменной части. |
boolean |
isPattern() |
Проверяет, является ли имя объекта шаблоном. |
boolean |
isPropertyListPattern() |
Проверяет, является ли имя объекта шаблоном для списка свойств ключей. |
boolean |
isPropertyPattern() |
Проверяет, является ли имя объекта шаблоном для свойств ключей. |
boolean |
isPropertyValuePattern() |
Проверяет, является ли имя объекта шаблоном для части значения по крайней мере одного из свойств ключей. |
boolean |
isPropertyValuePattern |
Проверяет, является ли значение, связанное с ключом в свойстве ключа, шаблоном. |
static String |
quote |
Возвращает цитируемую форму заданной строки, подходящую для включения в ObjectName. |
void |
setMBeanServer |
Устанавливает сервер MBean, на котором будет выполняться запрос. |
String |
toString() |
Возвращает строковое представление имени объекта. |
static String |
unquote |
Возвращает нецитируемую форму заданной строки. |
Подробное описание полей
WILDCARD
public static final ObjectName WILDCARD
- Since:
- 1.6
Подробное описание конструкторов
ObjectName
public ObjectName(String name) throws MalformedObjectNameException
- Parameters:
-
name- Строковое представление имени объекта. - Throws:
-
MalformedObjectNameException- Переданная строка не имеет правильного формата. -
NullPointerException- Параметрnameравен null.
ObjectName
public ObjectName(String domain, String key, String value) throws MalformedObjectNameException
- Parameters:
-
domain- Часть домена имени объекта. -
key- Атрибут в ключевой свойстве имени объекта. -
value- Значение в ключевой свойстве имени объекта. - Throws:
-
MalformedObjectNameException-domain,keyилиvalueсодержит недопустимый символ, илиvalueне соответствует правилам цитирования, или длина домена превышает максимальную разрешенную длину. -
NullPointerException- Один из параметров равен null.
ObjectName
public ObjectName(String domain, Hashtable<String,String> table) throws MalformedObjectNameException
- Parameters:
-
domain- Часть домена имени объекта. -
table- Хэш-таблица, содержащая одно или несколько ключевых свойств. Ключ каждой записи в таблице является ключом ключевого свойства в имени объекта. Соответствующее значение в таблице — это соответствующее значение в имени объекта. - Throws:
-
MalformedObjectNameException-domainсодержит недопустимый символ, или один из ключей или значений вtableсодержит недопустимый символ, или одно из значений вtableне соответствует правилам цитирования, или длина домена превышает максимальную разрешенную длину. -
NullPointerException- Один из параметров равен null.
Подробное описание методов
getInstance
public static ObjectName getInstance(String name) throws MalformedObjectNameException, NullPointerException
Возвращает экземпляр ObjectName, который можно использовать везде, где можно использовать объект, полученный с помощью new
ObjectName(name). Возвращаемый объект может быть подклассом ObjectName. Вызов этого метода дважды с теми же параметрами может вернуть один и тот же объект или два равных, но не идентичных объекта.
- Parameters:
-
name- Строковое представление имени объекта. - Returns:
- ObjectName, соответствующий заданной строке.
- Throws:
-
MalformedObjectNameException- Переданная строка не имеет правильного формата. -
NullPointerException- Параметрnameравен null.
getInstance
public static ObjectName getInstance(String domain, String key, String value) throws MalformedObjectNameException
Возвращает экземпляр ObjectName, который можно использовать везде, где можно использовать объект, полученный с помощью new ObjectName(domain, key, value). Возвращаемый объект может быть подклассом ObjectName. Вызов этого метода дважды с теми же параметрами может вернуть один и тот же объект или два равных, но не идентичных объекта.
- Parameters:
-
domain- Часть домена имени объекта. -
key- Атрибут в ключевой свойстве имени объекта. -
value- Значение в ключевой свойстве имени объекта. - Returns:
- ObjectName, соответствующий заданному домену, ключу и значению.
- Throws:
-
MalformedObjectNameException-domain,keyилиvalueсодержит недопустимый символ, илиvalueне соответствует правилам цитирования, или длина домена превышает максимальную разрешенную длину. -
NullPointerException- Один из параметров равен null.
getInstance
public static ObjectName getInstance(String domain, Hashtable<String,String> table) throws MalformedObjectNameException
Возвращает экземпляр ObjectName, который можно использовать везде, где можно использовать объект, полученный с помощью new ObjectName(domain, table). Возвращаемый объект может быть подклассом ObjectName. Вызов этого метода дважды с теми же параметрами может вернуть один и тот же объект или два равных, но не идентичных объекта.
- Parameters:
-
domain- Часть домена имени объекта. -
table- Хэш-таблица, содержащая одно или несколько ключевых свойств. Ключ каждой записи в таблице является ключом ключевого свойства в имени объекта. Соответствующее значение в таблице — это соответствующее значение в имени объекта. - Returns:
- ObjectName, соответствующий заданному домену и отображениям ключей.
- Throws:
-
MalformedObjectNameException-domainсодержит недопустимый символ, или один из ключей или значений вtableсодержит недопустимый символ, или одно из значений вtableне соответствует правилам цитирования, или длина домена превышает максимальную разрешенную длину. -
NullPointerException- Один из параметров равен null.
getInstance
public static ObjectName getInstance(ObjectName name)
Возвращает экземпляр ObjectName, который можно использовать везде, где можно использовать заданный объект. Возвращаемый объект может быть подклассом ObjectName. Если name является подклассом ObjectName, нет гарантии, что возвращаемый объект будет того же класса.
Возвращаемое значение может или не может быть идентичным name. Вызов этого метода дважды с теми же параметрами может вернуть один и тот же объект или два равных, но не идентичных объекта.
Поскольку ObjectName неизменяемый, обычно не имеет смысла создавать копию ObjectName. Основное применение этого метода — защита от злонамеренного вызывающего объекта, который может передать экземпляр подкласса со неожиданным поведением в чувствительный код. Такой код может вызвать этот метод, чтобы получить ObjectName, о котором известно, что он не имеет неожиданного поведения.
- Parameters:
-
name- экземпляр класса ObjectName или подкласса - Returns:
- экземпляр ObjectName или подкласса, о котором известно, что он имеет те же семантики. Если
nameсоблюдает семантики ObjectName, то возвращаемый объект равен (хотя и не обязательно идентичен)name. - Throws:
-
NullPointerException-nameравен null.
isPattern
public boolean isPattern()
Имя объекта является шаблоном, если его домен содержит подстановку или если имя объекта является шаблоном свойства.
- Returns:
- True, если имя является шаблоном, иначе false.
isDomainPattern
public boolean isDomainPattern()
- Returns:
- True, если имя является шаблоном домена, иначе false.
isPropertyPattern
public boolean isPropertyPattern()
Имя объекта является шаблоном для ключевых свойств, если это шаблон для списка ключевых свойств (например, "d:k=v,*") или для значений свойств (например, "d:k=*") или для обоих (например, "d:k=*,*").
- Returns:
- True, если имя является шаблоном свойства, иначе false.
isPropertyListPattern
public boolean isPropertyListPattern()
Например, "d:k=v,*" и "d:k=*,*" являются шаблонами списка ключевых свойств, а "d:k=*" — нет.
- Returns:
- True, если имя является шаблоном списка свойств, иначе false.
- Since:
- 1.6
isPropertyValuePattern
public boolean isPropertyValuePattern()
Например, "d:k=*" и "d:k=*,*" являются шаблонами значений свойств, а "d:k=v,*" — нет.
- Returns:
- True, если имя является шаблоном значения свойства, иначе false.
- Since:
- 1.6
isPropertyValuePattern
public boolean isPropertyValuePattern(String property)
- Parameters:
-
property- Свойство, значение которого нужно проверить. - Returns:
- True, если значение, связанное с данным ключевым свойством, является шаблоном, иначе false.
- Throws:
-
NullPointerException- Еслиpropertyравен null. -
IllegalArgumentException- Еслиpropertyне является допустимым ключевым свойством для этого ObjectName. - Since:
- 1.6
getCanonicalName
public String getCanonicalName()
Возвращает каноническую форму имени; то есть строковое представление, где свойства отсортированы в лексикографическом порядке.
Более точно, каноническая форма имени — это строка, состоящая из части домена, двоеточия (:), канонического списка свойств ключей и указания шаблона.
Канонический список свойств ключей — та же строка, что и описано для getCanonicalKeyPropertyListString().
Указание шаблона:
- пустая строка для ObjectName, который не является шаблоном списка свойств;
- звездочка для ObjectName, который является шаблоном списка свойств без ключей; или
- запятая и звездочка (
,*) для ObjectName, который является шаблоном списка свойств с хотя бы одним ключом.
- Возвращает:
- Каноническую форму имени.
getDomain
public String getDomain()
- Возвращает:
- Домен.
getKeyProperty
public String getKeyProperty(String property)
- Параметры:
-
property- Свойство, значение которого необходимо получить. - Возвращает:
- Значение свойства или null, если такого свойства в этом ObjectName нет.
- Исключение:
-
NullPointerException- Еслиpropertyравно null.
getKeyPropertyList
public Hashtable<String,String> getKeyPropertyList()
Возвращает свойства ключей в виде таблицы Hashtable. Возвращаемое значение — это Hashtable, в котором каждый ключ — это ключ в списке свойств ключей ObjectName, а каждое значение — соответствующее значение.
Возвращаемое значение может быть неизменяемым. Если оно изменяемо, изменение не повлияет на этот ObjectName.
- Возвращает:
- Таблица свойств ключей.
getKeyPropertyListString
public String getKeyPropertyListString()
Возвращает строковое представление списка свойств ключей, указанных при создании. Если этот ObjectName был создан с конструктором ObjectName(String), свойства ключей в возвращаемой строке будут в том же порядке, что и в аргументе конструктора.
- Возвращает:
- Строка списка свойств ключей. Эта строка не зависит от того, является ли ObjectName шаблоном.
getCanonicalKeyPropertyListString
public String getCanonicalKeyPropertyListString()
String.compareTo(String).- Возвращает:
- Каноническая строка списка свойств ключей. Эта строка не зависит от того, является ли ObjectName шаблоном.
toString
public String toString()
Возвращает строковое представление имени объекта. Формат этой строки не определен, но пользователи могут ожидать, что два ObjectName возвращают одну и ту же строку тогда и только тогда, когда они равны.
equals
public boolean equals(Object object)
getCanonicalName().hashCode
quote
public static String quote(String s)
Возвращает цитированную форму заданной строки, подходящую для включения в ObjectName. Возвращаемое значение может быть использовано в качестве значения, связанного с ключом в ObjectName. Строка s может содержать любые символы. Соответствующая цитата гарантирует, что возвращаемое значение является допустимым в ObjectName.
Возвращаемое значение состоит из кавычки (" "), последовательности символов, соответствующих символам s, и еще одной кавычки. Символы в s остаются неизменными в возвращаемом значении, за исключением:
- Кавычка ("") заменяется обратной косой чертой (\) и кавычкой.
- Звездочка (*) заменяется обратной косой чертой (\) и звездочкой.
- Вопросительный знак (?) заменяется обратной косой чертой (\) и вопросительным знаком.
- Обратная косая черта (\) заменяется двумя обратными косыми чертами.
- Символ новой строки (символ '\n' в Java) заменяется обратной косой чертой и символом '\n'.
- Параметры:
-
s- строка, которая должна быть цитирована. - Возвращает:
- цитированная строка.
- Исключение:
-
NullPointerException- еслиsравно null.
unquote
public static String unquote(String q)
Возвращает нецитированную форму заданной строки. Если q является строкой, возвращаемой quote(s), то unquote(q).equals(s). Если нет строки s, для которой quote(s).equals(q), то unquote(q) выбрасывает IllegalArgumentException.
Эти правила подразумевают, что существует взаимно однозначное соответствие между цитированными и нецитированными формами.
- Параметры:
-
q- строка, которая должна быть нецитирована. - Возвращает:
- нецитированная строка.
- Исключение:
-
IllegalArgumentException- еслиqне могла быть возвращена методомquote(java.lang.String), например, если она не начинается и не заканчивается кавычкой ("). -
NullPointerException- еслиqравно null.
apply
public boolean apply(ObjectName name)
Проверяет, соответствует ли этот ObjectName, который может быть шаблоном, другому ObjectName. Если name — шаблон, результат — false. Если этот ObjectName — шаблон, результат — true тогда и только тогда, когда name соответствует шаблону. Если ни этот ObjectName, ни name не являются шаблоном, результат — true тогда и только тогда, когда два ObjectName равны, как описано в методе equals(Object).
- Определено в:
-
applyв интерфейсеQueryExp - Параметры:
-
name- Имя MBean для сравнения. - Возвращает:
- True, если
nameсоответствует этому ObjectName. - Исключение:
-
NullPointerException- еслиnameравно null.
setMBeanServer
public void setMBeanServer(MBeanServer mbs)
QueryExp- Определено в:
-
setMBeanServerв интерфейсеQueryExp - Параметры:
-
mbs- Сервер MBean, на котором будет выполняться запрос.
compareTo
public int compareTo(ObjectName name)
Сравнивает два экземпляра ObjectName. Отношение порядка между ObjectName не полностью определено, но предполагается, что отсортированный список ObjectName будет отображаться в порядке, удобном для чтения человеком.
В частности, если у двух экземпляров ObjectName разные домены, то их порядок — это лексикографический порядок доменов. Порядок списка свойств ключей остается неопределённым.
Например, экземпляры ObjectName ниже:
- Shapes:type=Square,name=3
- Colors:type=Red,name=2
- Shapes:type=Triangle,side=isosceles,name=2
- Colors:type=Red,name=1
- Shapes:type=Square,name=1
- Colors:type=Blue,name=1
- Shapes:type=Square,name=2
- JMImplementation:type=MBeanServerDelegate
- Shapes:type=Triangle,side=scalene,name=1
могут быть упорядочены следующим образом:
- Colors:type=Blue,name=1
- Colors:type=Red,name=1
- Colors:type=Red,name=2
- JMImplementation:type=MBeanServerDelegate
- Shapes:type=Square,name=1
- Shapes:type=Square,name=2
- Shapes:type=Square,name=3
- Shapes:type=Triangle,side=scalene,name=1
- Shapes:type=Triangle,side=isosceles,name=2
- Specified by:
-
compareToв интерфейсеComparable<ObjectName> - Parameters:
-
name- сравниваемый экземпляр ObjectName. - Returns:
- отрицательное число, ноль или положительное число, в зависимости от того, меньше, равно или больше данный экземпляр ObjectName, чем указанный экземпляр ObjectName.
- Since:
- 1.6
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.management/javax/management/ObjectName.html