public class ObjectName extends Object implements Comparable<ObjectName>, QueryExp
MBean のオブジェクト名、または複数の MBean 名に一致するパターンを表します。このクラスのインスタンスは不変です。
このクラスのインスタンスを使って、次の項目を表現できます。
オブジェクト名は、ドメインの部分とキーのプロパティーの部分から成ります。
domain は、コロン (:
) を含まない文字列です。文字列「//
」は今後使用するために予約されているため、この文字列は含めないようにしてください。
ドメインにワイルドカード文字のアスタリスク (*
) や疑問符 (?
) が含まれている場合、オブジェクト名はパターンです。アスタリスクは、0 個以上の文字列を表します。疑問符は単一の文字を表します。
ドメインが空の場合、この部分は、ObjectName を使用する MBean サーバーのデフォルトドメインで置き換えられる場合があります。
キーのプロパティーは、キーとその値のセットです。これらの並び順はばらばらです。
個々のキーは、空文字列以外の文字列で、コンマ (,
)、等号 (=
)、コロン、アスタリスク、疑問符を含めることはできません。また、特定の ObjectName 内に同じキーを重複して含めることはできません。
キー 1 個につき、値が 1 個ずつ割り当てられます。この値は、引用符で囲まれた文字列か、引用符で囲まれていない文字列です。
引用符で囲まれていない値は、空文字列の可能性があります。この文字列には、コンマ、等号、コロン、引用符を含めることはできません。
引用符で囲まれていない値にワイルドカード文字のアスタリスクや疑問符が含まれている場合、オブジェクト名はプロパティー値パターンになります。アスタリスクは、0 個以上の文字列を表します。疑問符は単一の文字を表します。
引用符で囲まれた値は、引用符 ("
) で囲まれた空文字列の可能性があります。文字列内のバックスラッシュ (\
) には特別な意味があります。バックスラッシュの後ろには、次のいずれかの文字が続きます。
引用符で囲まれた値の内側に、引用符を挿入することはできません。ただし、奇数個のバックスラッシュの直後では挿入可能です。
引用符で囲まれた値の引用符部分と、その値の内側のバックスラッシュは、値の一部と見なされます。
引用符で囲まれた値にアスタリスクや疑問符が含まれており、その前にバックスラッシュがない場合、これらの文字はワイルドカード文字と見なされ、オブジェクト名はプロパティー値パターンになります。アスタリスクは、0 個以上の文字列を表します。疑問符は単一の文字を表します。
ObjectName は、プロパティーリストパターンの可能性があります。この場合、0 個以上のキーと値の組み合わせを持つことがあります。ドメインが一致し、同一のキーと値の組み合わせを持つ (その他のキーと値が存在していてもよい)、パターンではない ObjectName に一致します。
ObjectName がプロパティー値パターンになるのは、前述のように、1 つ以上の引用符で囲まれたまたは引用符で囲まれていないキープロパティー値にワイルドカード文字のアスタリスクまたは疑問符が含まれている場合です。この場合は 1 つ以上のキーと値を持ち、1 つ以上の値にワイルドカード文字が含まれています。これは、ドメインが一致し、値の一致する同一のキーを持つ、パターンではない ObjectName に一致します。プロパティー値パターンがプロパティーリストパターンでもある場合、パターンではない ObjectName にその他のキーおよび値を含めることができます。
ObjectName は、プロパティーリストパターンまたはプロパティー値パターンあるいはその両方である場合に、プロパティーパターンになります。
ObjectName は、ドメインにワイルドカードが含まれるか、ObjectName がプロパティーパターンの場合、パターンになります。
ObjectName がパターンでない場合、キーの値の組み合わせを 1 つ以上持っている必要があります。
ObjectName パターンの例を、次に示します。
*:type=Foo,name=Bar
は、正確なキーセットが type=Foo,name=Bar
であるすべてのドメイン内の名前に一致します。d:type=Foo,name=Bar,*
は、キー type=Foo,name=Bar
およびその他のゼロ以上のキーを含むドメイン d
内の名前に一致します。*: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 は、順に、次の要素を持つ String として書き込み可能です。
:
)。
String として書き込まれたキーのプロパティーリストは、コンマ区切り形式の要素リストになります。各要素は、アスタリスクかキーのプロパティーです。キーのプロパティーは、キー、等号 (=
)、値から成ります。
キーのプロパティーリストの要素として、最大 1 個のアスタリスクを含めることができます。キーのプロパティーリストにアスタリスク要素が含まれる場合、ObjectName はプロパティーリストパターンになります。
ObjectName を表す String 内の空白文字に、特別な意味はありません。たとえば、次の String について考えてみましょう。
domain: key1 = value1 , key2 = value2この String は、2 つのキーを持つ ObjectName を表します。キーの名前は、それぞれ 6 文字 (最初と最後の文字は空白文字) です。キーの値
" key1 "
の前後にも空白文字が入っています。
上記の文字制約のほか、引用符で囲まれているかどうかを問わず、ObjectName のどの部分 (ドメイン部分、キー部分、値部分) にも、復帰改行文字 ('\n'
) を含めることはできないという制約があります。ただし、\n
付きの引用符で囲まれた値には、復帰改行文字を含めることができます。
特殊文字と引用符の使用方法に関する規則は、ObjectName の作成に使用するコンストラクタの種類を問わず適用されます。
異なった複数のベンダーから提供された MBean の競合を避けるためには、MBean を指定する組織の逆 DNS 名、ピリオド、その組織によって解釈が決定される文字列から成るドメイン名を付けるとよいでしょう。たとえば、example.com
指定の MBean は、com.example.MyDomain
などのドメインを持ちます。これは、Java 言語パッケージ名の規則と基本的に同じです。
このクラスの serialVersionUID は 1081892073854801359L
です。
修飾子と型 | フィールドと説明 |
---|---|
static ObjectName |
WILDCARD
ワイルドカード「*:*」 ObjectName を定義します。
|
コンストラクタと説明 |
---|
ObjectName(String name)
文字列を指定してオブジェクト名を構築します。
|
ObjectName(String domain, Hashtable<String,String> table)
Hashtable から、キーのプロパティーを複数持つオブジェクト名を構築します。
|
ObjectName(String domain, String key, String value)
キーのプロパティーを 1 つだけ持つオブジェクト名を構築します。
|
修飾子と型 | メソッドと説明 |
---|---|
boolean |
apply(ObjectName name)
この ObjectName (パターンの可能性がある) が別の ObjectName と一致するかどうかをテストします。
|
int |
compareTo(ObjectName name)
ObjectName の 2 つのインスタンスを比較します。
|
boolean |
equals(Object object)
現在のオブジェクト名と別のオブジェクト名を比較します。
|
String |
getCanonicalKeyPropertyListString()
字句順に並べられたキーのプロパティーリストの文字列表現を返します。
|
String |
getCanonicalName()
正規形式の名前、すなわちプロパティーを字句順に並べた文字列表現を返します。
|
String |
getDomain()
ドメイン部分を返します。
|
static ObjectName |
getInstance(ObjectName name)
指定されたオブジェクトを使用できる任意の場所で使用可能な ObjectName のインスタンスを返します。
|
static ObjectName |
getInstance(String name)
new ObjectName(name) で取得されたオブジェクトを使用できる任意の場所で使用可能な ObjectName のインスタンスを返します。 |
static ObjectName |
getInstance(String domain, Hashtable<String,String> table)
new ObjectName(domain, table) で取得されたオブジェクトを使用できる任意の場所で使用可能な ObjectName のインスタンスを返します。 |
static ObjectName |
getInstance(String domain, String key, String value)
new ObjectName(domain, key, value) で取得されたオブジェクトを使用できる任意の場所で使用可能な ObjectName のインスタンスを返します。 |
String |
getKeyProperty(String property)
キーのプロパティーのキー部分に関連付けられた値を取得します。
|
Hashtable<String,String> |
getKeyPropertyList()
キーのプロパティーを Hashtable として返します。
|
String |
getKeyPropertyListString()
作成時に指定した、キーのプロパティーのリストの文字列表現を返します。
|
int |
hashCode()
このオブジェクト名のハッシュコードを返します。
|
boolean |
isDomainPattern()
オブジェクト名がドメイン部分のパターンであるかどうかをチェックします。
|
boolean |
isPattern()
オブジェクト名がパターンかどうかをチェックします。
|
boolean |
isPropertyListPattern()
オブジェクト名がキーのプロパティーリスト上のパターンであるかどうかをチェックします。
|
boolean |
isPropertyPattern()
オブジェクト名がキーのプロパティーのパターンであるかどうかをチェックします。
|
boolean |
isPropertyValuePattern()
オブジェクト名が 1 つ以上のキープロパティーの値部分のパターンであるかどうかをチェックします。
|
boolean |
isPropertyValuePattern(String property)
キーのプロパティー内のキーに関連付けられた値がパターンであるかどうかをチェックします。
|
static String |
quote(String s)
指定された String を、ObjectName に含めやすいように引用符で囲んだ値を返します。
|
void |
setMBeanServer(MBeanServer mbs)
クエリーが実行される MBean サーバーを設定します。
|
String |
toString()
オブジェクト名の文字列表現を返します。
|
static String |
unquote(String q)
指定された String を引用符で囲まない形式で返します。
|
public static final ObjectName WILDCARD
public ObjectName(String name) throws MalformedObjectNameException
name
- オブジェクト名の文字列表現。MalformedObjectNameException
- パラメータとして渡された文字列の形式が正しくない場合。NullPointerException
- name
パラメータが null の場合。public ObjectName(String domain, String key, String value) throws MalformedObjectNameException
domain
- オブジェクト名のドメイン部分。key
- オブジェクト名のキーのプロパティーに含まれる属性。value
- オブジェクト名のキーのプロパティーに含まれる値。MalformedObjectNameException
- domain
、key
、または value
に不正な文字が含まれる場合、または value
が引用符の使用規則に従っていない場合。NullPointerException
- いずれかのパラメータが null の場合。public ObjectName(String domain, Hashtable<String,String> table) throws MalformedObjectNameException
domain
- オブジェクト名のドメイン部分。table
- キーのプロパティーを 1 つ以上含むハッシュテーブル。テーブル内の各エントリのキーは、オブジェクト名のキーのプロパティーのキー部分。テーブル内の関連する値は、オブジェクト名の関連する値。MalformedObjectNameException
- domain
に不正な文字が含まれる場合、table
内のキーまたは値に不正な文字が含まれる場合、または table
内に引用符の使用規則に従っていない値が 1 つ以上ある場合。NullPointerException
- いずれかのパラメータが null の場合。public static ObjectName getInstance(String name) throws MalformedObjectNameException, NullPointerException
new ObjectName(name)
で取得されたオブジェクトを使用できる任意の場所で使用可能な ObjectName のインスタンスを返します。返されるオブジェクトは、ObjectName のサブクラスの可能性があります。同じパラメータを指定してこのメソッドを 2 回呼び出した場合、同じオブジェクトが返されるか、2 つの同等の (同一ではない) オブジェクトが返される可能性があります。
name
- オブジェクト名の文字列表現。MalformedObjectNameException
- パラメータとして渡された文字列の形式が正しくない場合。NullPointerException
- name
パラメータが null の場合。public static ObjectName getInstance(String domain, String key, String value) throws MalformedObjectNameException
new ObjectName(domain, key, value)
で取得されたオブジェクトを使用できる任意の場所で使用可能な ObjectName のインスタンスを返します。返されるオブジェクトは、ObjectName のサブクラスの可能性があります。同じパラメータを指定してこのメソッドを 2 回呼び出した場合、同じオブジェクトが返されるか、2 つの同等の (同一ではない) オブジェクトが返される可能性があります。
domain
- オブジェクト名のドメイン部分。key
- オブジェクト名のキーのプロパティーに含まれる属性。value
- オブジェクト名のキーのプロパティーに含まれる値。MalformedObjectNameException
- domain
、key
、または value
に不正な文字が含まれる場合、または value
が引用符の使用規則に従っていない場合。NullPointerException
- いずれかのパラメータが null の場合。public static ObjectName getInstance(String domain, Hashtable<String,String> table) throws MalformedObjectNameException
new ObjectName(domain, table)
で取得されたオブジェクトを使用できる任意の場所で使用可能な ObjectName のインスタンスを返します。返されるオブジェクトは、ObjectName のサブクラスの可能性があります。同じパラメータを指定してこのメソッドを 2 回呼び出した場合、同じオブジェクトが返されるか、2 つの同等の (同一ではない) オブジェクトが返される可能性があります。
domain
- オブジェクト名のドメイン部分。table
- キーのプロパティーを 1 つ以上含むハッシュテーブル。テーブル内の各エントリのキーは、オブジェクト名のキーのプロパティーのキー部分。テーブル内の関連する値は、オブジェクト名の関連する値。MalformedObjectNameException
- domain
に不正な文字が含まれる場合、table
内のキーまたは値に不正な文字が含まれる場合、または table
内に引用符の使用規則に従っていない値が 1 つ以上ある場合。NullPointerException
- いずれかのパラメータが null の場合。public static ObjectName getInstance(ObjectName name)
指定されたオブジェクトを使用できる任意の場所で使用可能な ObjectName のインスタンスを返します。返されるオブジェクトは、ObjectName のサブクラスの可能性があります。name
が ObjectName のサブクラスである場合、同じクラスのオブジェクトが返されるとは限りません。
戻り値は name
と同一とは限りません。同じパラメータを指定してこのメソッドを 2 回呼び出した場合、同じオブジェクトが返されるか、2 つの同等の (同一ではない) オブジェクトが返される可能性があります。
ObjectName は不変なので、ObjectName のコピーの作成に適していない場合もあります。このメソッドは主に、悪意を持った呼び出しを防止するために使用されます。たとえば、重要なコードに予想外の動作をするサブクラスのインスタンスを渡そうとする呼び出しは、回避されなければいけません。重要なコードは、このメソッドを呼び出すことにより、正しく動作することがわかっている ObjectName を取得できます。
name
- ObjectName クラスのインスタンスまたはサブクラスのインスタンス。name
が ObjectName のセマンティクスに従う場合、name
と同等の (ただし同一であるとは限らない) オブジェクトが返される。NullPointerException
- name
が null の場合。public boolean isPattern()
ドメインにワイルドカードが含まれる場合や、オブジェクト名がプロパティーパターンの場合、このオブジェクト名はパターンです。
public boolean isDomainPattern()
public boolean isPropertyPattern()
オブジェクト名がキーのプロパティーリスト (「d:k=v,*」など) またはプロパティー値 (「d:k=*」など) あるいはその両方 (「d:k=*,*」など) のパターンである場合、オブジェクト名はキーのプロパティー上のパターンになります。
public boolean isPropertyListPattern()
たとえば、「d:k=v,*」と「d:k=*,*」はキーのプロパティーリストのパターンですが、「d:k=*」はそうではありません。
public boolean isPropertyValuePattern()
たとえば、「d:k=*」と「d:k=*,*」はプロパティー値のパターンですが、「d:k=v,*」はそうではありません。
public boolean isPropertyValuePattern(String property)
property
- プロパティー。このプロパティーの値がチェックされる。NullPointerException
- property
が null の場合。IllegalArgumentException
- property
が この ObjectName の有効なキーのプロパティーではない場合。public String getCanonicalName()
正規形式の名前、すなわちプロパティーを字句順に並べた文字列表現を返します。
正確には、ドメイン部分、コロン (:
)、キーのプロパティーの正規リスト、パターン表示から成る String を正規形式の名前と呼びます。
キーのプロパティーの正規リストは、getCanonicalKeyPropertyListString()
の説明と同じ文字列です。
パターン表示は、次のいずれかになります。
,*
)。
public String getDomain()
public String getKeyProperty(String property)
property
- プロパティー。このプロパティーの値が取得される。NullPointerException
- property
が null の場合。public Hashtable<String,String> getKeyPropertyList()
キーのプロパティーを Hashtable として返します。戻り値は Hashtable です。このテーブル内の個々のキーは、ObjectName のキーのプロパティーリストのキーに一致しています。また、テーブル内の値は、キーに関連付けられた値に一致しています。
戻り値は変更できません。変更を加えても、この ObjectName に影響はありません。
public String getKeyPropertyListString()
作成時に指定した、キーのプロパティーのリストの文字列表現を返します。この ObjectName がコンストラクタ ObjectName(String)
で構築された場合、返される String 内のキーのプロパティーは、コンストラクタの引数と同じ順で並べられます。
public String getCanonicalKeyPropertyListString()
String.compareTo(String)
によって示される順序です。public String toString()
オブジェクト名の文字列表現を返します。この文字列の形式は指定されていませんが、2 つの ObjectName が等しい場合にのみ、同一の文字列が返されます。
public boolean equals(Object object)
getCanonicalName()
に説明された文字列です。equals
、クラス: Object
object
- 現在のオブジェクト名と比較するオブジェクト名。object
が ObjectName で、その正規形式がこの ObjectName の正規形式に等しい場合は true。Object.hashCode()
、HashMap
public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public static String quote(String s)
指定された String を、ObjectName に含めやすいように引用符で囲んだ値を返します。戻り値は、ObjectNmae 内のキーの値として使用できます。String s
には任意の文字を含めることができます。引用符の使用方法が適切であれば、戻り値は ObjectName 内の正当な値です。
戻り値は、s
の文字に対応する文字のシーケンスを引用符 ("") で囲んだ形式になります。s
内の文字は、次の場合を除いて戻り値内で変更されません。
s
- 引用符で囲まれる String。NullPointerException
- s
が null である場合。public static String unquote(String q)
指定された String を引用符で囲まない形式で返します。q
が quote(s)
によって返される String である場合、unquote(q).equals(s)
です。quote(s).equals(q)
の String s
が存在しない場合、unquote(q) は IllegalArgumentException をスローします。
これらの規則は、引用符で囲まれた形式と囲まれていない形式が 1 対 1 で対応していることを意味しています。
q
- 引用符で囲まれない String。IllegalArgumentException
- 引用符 (") で囲まれていない場合など、quote(java.lang.String)
メソッドが q
を返さない場合。NullPointerException
- q
が null である場合。public boolean apply(ObjectName name)
この ObjectName (パターンの可能性がある) が別の ObjectName と一致するかどうかをテストします。name
がパターンの場合、結果は false です。この ObjectName がパターンの場合、name
がこのパターンと一致している場合にのみ、結果は true です。この ObjectName も name
もパターンではなく、2 つの ObjectNames が equals(Object)
メソッドの説明どおり等価である場合にのみ、結果は true です。
apply
、インタフェース: QueryExp
name
- 比較対象の MBean の名前。name
がこの ObjectName と一致する場合は true。NullPointerException
- name
が null である場合。public void setMBeanServer(MBeanServer mbs)
QueryExp
setMBeanServer
、インタフェース: QueryExp
mbs
- クエリーが実行される MBean サーバー。public int compareTo(ObjectName name)
ObjectName の 2 つのインスタンスを比較します。ObjectName 間の順序リレーションは、仕様が完全に定められたものではありませんが、ソートされた ObjectNames のリストはユーザーが読みやすい順序で表示されるように意図されています。
特に、2 つの ObjectName インスタンスのドメインが異なる場合、その順序はドメインの辞書規則に従います。キーのプロパティーリストの順序は、未指定のままになります。
たとえば、次のような ObjectName について考えましょう。
これらは、次のような順序にできます。
compareTo
、インタフェース: Comparable<ObjectName>
name
-比較対象のオブジェクト。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.