Класс ObjectName
- Все реализованные интерфейсы:
-
Serializable,Comparable<ObjectName>,QueryExp
public class ObjectName extends Object implements Comparable<ObjectName>, QueryExp
Представляет имя объекта MBean или шаблон, который может соответствовать именам нескольких MBean. Экземпляры этого класса неизменяемы.
Экземпляр этого класса может использоваться для представления:
- Имени объекта
- Шаблона имени объекта в контексте запроса
Имя объекта состоит из двух частей: домена и ключевых свойств.
Домен — это строка символов, не включающая символ двоеточия (:). Рекомендуется, чтобы домен не содержал строку "//", которая зарезервирована для будущего использования.
Если домен содержит по крайней мере один символ-дикий знак звёздочка (*) или вопросительный знак (?), то имя объекта является шаблоном. Звёздочка соответствует любой последовательности нуля или более символов, а вопросительный знак — любому одиночному символу.
Если домен пустой, он будет заменён в определённых контекстах домен по умолчанию сервера 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.
Чтобы избежать коллизий между MBean, предоставленными разными поставщиками, полезно использовать соглашение, согласно которому имя домена начинается с обратного DNS-имени организации, которая определяет MBean, за которым следует точка и строка, интерпретация которой определяется этой организацией. Например, MBean, определённые example.com будут иметь такие домены, как com.example.MyDomain.
Это в основном то же соглашение, что и для имён пакетов языка Java.
serialVersionUID этого класса равен 1081892073854801359L.
- Примечание о реализации:
- Максимальная разрешённая длина имени домена в этой реализации составляет
Integer.MAX_VALUE/4 - С:
- 1.5
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final ObjectName |
WILDCARD |
Определяет объект с подстановочным знаком "*:*" ObjectName. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ObjectName |
Создаёт имя объекта из заданной строки. |
ObjectName |
Создаёт имя объекта с ровно одной ключевой характеристикой. |
ObjectName |
Создаёт имя объекта со множеством ключевых характеристик из Hashtable. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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, который является шаблоном списка свойств с по меньшей мере одним ключом.
- Returns:
- Каноническая форма имени.
getDomain
public String getDomain()
- Returns:
- Домен.
getKeyProperty
public String getKeyProperty(String property)
- Parameters:
-
property- Свойство, значение которого нужно получить. - Returns:
- Значение свойства или null, если такого свойства нет в этом ObjectName.
- Throws:
-
NullPointerException- Еслиpropertyравно null.
getKeyPropertyList
public Hashtable<String,String> getKeyPropertyList()
Возвращает свойства ключей в виде Hashtable. Возвращаемое значение — Hashtable, в котором каждый ключ — ключ в списке свойств ключей ObjectName, а каждое значение — соответствующее значение.
Возвращаемое значение может быть неизменяемым. Если оно изменяемо, изменение его не повлияет на этот ObjectName.
- Returns:
- Таблица свойств ключей.
getKeyPropertyListString
public String getKeyPropertyListString()
Возвращает строковое представление списка свойств ключей, заданных во время создания. Если этот ObjectName был создан с помощью конструктора ObjectName(String), свойства ключей в возвращаемой строке будут в том же порядке, что и в аргументе конструктора.
- Returns:
- Строка списка свойств ключей. Эта строка не зависит от того, является ли ObjectName шаблоном.
getCanonicalKeyPropertyListString
public String getCanonicalKeyPropertyListString()
String.compareTo(String).- Returns:
- Строка канонического списка свойств ключей. Эта строка не зависит от того, является ли ObjectName шаблоном.
toString
public String toString()
Возвращает строковое представление имени объекта. Формат этой строки не определен, но пользователи могут ожидать, что два ObjectName возвращают одну и ту же строку тогда и только тогда, когда они равны.
- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этого имени объекта.
equals
public boolean equals(Object object)
getCanonicalName().- Overrides:
-
equalsв классеObject - Parameters:
-
object- Имя объекта, с которым нужно сравнить текущее имя объекта. - Returns:
- True, если
objectявляется ObjectName, каноническая форма которого равна канонической форме этого ObjectName. - See Also:
hashCode
public int hashCode()
- Overrides:
-
hashCodeв классеObject - Returns:
- значение хеш-кода для этого объекта.
- See Also:
quote
public static String quote(String s)
Возвращает цитированную форму данного String, подходящую для включения в ObjectName. Возвращаемое значение может использоваться в качестве значения, связанного с ключом в ObjectName. Строка s может содержать любые символы. Соответствующее цитирование гарантирует, что возвращаемое значение является допустимым в ObjectName.
Возвращаемое значение состоит из кавычек («»), последовательности символов, соответствующих символам s, и других кавычек. Символы в s появляются в возвращаемом значении без изменений, за исключением:
- Кавычки («») заменяются обратной косой чертой (\) и кавычкой.
- Звездочка (*) заменяется обратной косой чертой (\) и звездочкой.
- Вопросительный знак (?) заменяется обратной косой чертой (\) и вопросительным знаком.
- Обратная косая черта (\) заменяется двумя обратными косыми чертами.
- Символ новой строки (символ '\n' в Java) заменяется обратной косой чертой, за которой следует символ '\n'.
- Parameters:
-
s- String, который нужно привести к цитированному виду. - Returns:
- цитированная строка.
- Throws:
-
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.
Эти правила подразумевают взаимно однозначное соответствие между цитированными и нецитированными формами.
- Parameters:
-
q- строка, которую нужно привести к нецитированному виду. - Returns:
- нецитированная строка.
- Throws:
-
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).
- Specified by:
-
applyв интерфейсеQueryExp - Parameters:
-
name- Имя MBean для сравнения. - Returns:
- True, если
nameсоответствует этому ObjectName. - Throws:
-
NullPointerException- еслиnameравно null.
setMBeanServer
public void setMBeanServer(MBeanServer mbs)
QueryExp- Specified by:
-
setMBeanServerв интерфейсеQueryExp - Parameters:
-
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, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/java.management/javax/management/ObjectName.html