モジュール java.management
パッケージ javax.management

クラスObjectName

  • すべての実装されたインタフェース:
    Serializable, Comparable<ObjectName>, QueryExp

    public class ObjectName
    extends Object
    implements Comparable<ObjectName>, QueryExp

    MBeanのオブジェクト名、または複数のMBean名に一致するパターンを表します。 このクラスのインスタンスは不変です。

    このクラスのインスタンスを使って、次の項目を表現できます。

    • オブジェクト名
    • クエリーのコンテキスト内のオブジェクト名パターン

    オブジェクト名は、ドメインの部分とキーのプロパティの部分から成ります。

    domainは、コロン(:)を含まない文字列です。 文字列「//」は今後使用するために予約されているため、この文字列は含めないようにしてください。

    ドメインにワイルドカード文字のアスタリスク(*)や疑問符(?)が含まれている場合、オブジェクト名はパターンです。 アスタリスクは、0個以上の文字列を表します。疑問符は単一の文字を表します。

    ドメインが空の場合、この部分は、ObjectNameを使用するMBeanサーバーのデフォルト・ドメインで置き換えられる場合があります。

    キーのプロパティは、キーとその値のセットです。これらの並び順はばらばらです。

    個々のキーは、空文字列以外の文字列で、カンマ(,)、等号(=)、コロン、アスタリスク、疑問符を含めることはできません。 また、特定のObjectName内に同じキーを重複して含めることはできません。

    キー1個につき、が1個ずつ割り当てられます。この値は、引用符で囲まれた文字列か、引用符で囲まれていない文字列です。

    引用符で囲まれていない値は、空文字列の可能性があります。この文字列には、カンマ、等号、コロン、引用符を含めることはできません。

    引用符で囲まれていない値にワイルドカード文字のアスタリスクや疑問符が含まれている場合、オブジェクト名はプロパティ値パターンになります。 アスタリスクは、0個以上の文字列を表します。疑問符は単一の文字を表します。

    引用符で囲まれた値は、引用符(")で囲まれた空文字列の可能性があります。 文字列内のバックスラッシュ(\)には特別な意味があります。 バックスラッシュの後ろには、次のいずれかの文字が続きます。

    • 別のバックスラッシュ。 2番目のバックスラッシュには特別な意味はありません。2つの文字で単一のバックスラッシュを表します。
    • 「n」。 前置されたバックスラッシュと1組で、単一の復帰改行(Javaにおける'\n')を表します。
    • 引用符。 前置されたバックスラッシュと1組で、単一の引用符を表します。この引用符は「閉じる」引用符とは見なされません。 引用符で囲まれた値を有効にするには、これとは別に「閉じる」引用符を指定する必要があります。
    • 疑問符(?)またはアスタリスク(*)。 バックスラッシュと1組で、単一の疑問符またはアスタリスクを表します。

    引用符で囲まれた値の内側に、引用符を挿入することはできません。ただし、奇数個のバックスラッシュの直後では挿入可能です。

    引用符で囲まれた値の引用符部分と、その値の内側のバックスラッシュは、値の一部と見なされます。

    引用符で囲まれた値にアスタリスクや疑問符が含まれており、その前にバックスラッシュがない場合、これらの文字はワイルドカード文字と見なされ、オブジェクト名はプロパティ値パターンになります。 アスタリスクは、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=Bard:type=Fro,name=Barなどに一致します。
    • d:type=F*o,name=Barは、d:type=Fo,name=Bard: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
     
    は、2つのキーを持つObjectNameを表します。 キーの名前は、それぞれ6文字(最初と最後の文字は空白文字)です。 キーの値" key1 "の前後にも空白文字が入っています。

    上記の文字制約のほか、引用符で囲まれているかどうかを問わず、ObjectNameのどの部分(ドメイン部分、キー部分、値部分)にも、復帰改行文字('\n')を含めることはできないという制約があります。 ただし、\n付きの引用符で囲まれた値には、復帰改行文字を含めることができます。

    特殊文字と引用符の使用方法に関する規則は、ObjectNameの作成に使用するコンストラクタの種類を問わず適用されます。

    異なった複数のベンダーから提供されたMBeanの競合を避けるためには、MBeanを指定する組織の逆DNS名、ピリオド、その組織によって解釈が決定される文字列から成るドメイン名を付けるとよいでしょう。 たとえば、example.com指定のMBeanは、com.example.MyDomainなどのドメインを持ちます。 これは、Java言語パッケージ名の規則と基本的に同じです。

    このクラスのserialVersionUID1081892073854801359Lです。

    実装上のノート:
    この実装におけるドメイン名の最大許容長は、Integer.MAX_VALUE/4です
    導入されたバージョン:
    1.5
    関連項目:
    直列化された形式
    • フィールドの詳細

      • WILDCARD

        public static final ObjectName WILDCARD
        ワイルドカード「*:*」ObjectNameを定義します。
        導入されたバージョン:
        1.6
    • コンストラクタの詳細

      • ObjectName

        public ObjectName​(String domain,
                          String key,
                          String value)
                   throws MalformedObjectNameException
        キーのプロパティを1つだけ持つオブジェクト名を構築します。
        パラメータ:
        domain - オブジェクト名のドメイン部分。
        key - オブジェクト名のキーのプロパティに含まれる属性。
        value - オブジェクト名のキーのプロパティに含まれる値。
        例外:
        MalformedObjectNameException - domainkey、またはvalueに不正な文字が含まれているか、valueがクォートの規則に従っていないか、ドメイン長が許容最大長を超えています。
        NullPointerException - いずれかのパラメータがnullの場合。
      • ObjectName

        public ObjectName​(String domain,
                          Hashtable<String,​String> table)
                   throws MalformedObjectNameException
        Hashtableから、キーのプロパティを複数持つオブジェクト名を構築します。
        パラメータ:
        domain - オブジェクト名のドメイン部分。
        table - キーのプロパティを1つ以上含むハッシュ・テーブル。 テーブル内の各エントリのキーは、オブジェクト名のキーのプロパティのキー部分。 テーブル内の関連する値は、オブジェクト名の関連する値。
        例外:
        MalformedObjectNameException - domainに不正な文字が含まれているか、またはtableのキーまたは値のいずれかに不正な文字が含まれているか、またはtableの値の1つが引用の規則に従っていないか、ドメインの長さが許容最大長を超えています。
        NullPointerException - いずれかのパラメータがnullの場合。
    • メソッドの詳細

      • getInstance

        public static ObjectName getInstance​(String name)
                                      throws MalformedObjectNameException,
                                             NullPointerException

        new ObjectName(name)で取得されたオブジェクトを使用できる任意の場所で使用可能なObjectNameのインスタンスを返します。 返されるオブジェクトは、ObjectNameのサブクラスの可能性があります。 同じパラメータを指定してこのメソッドを2回呼び出した場合、同じオブジェクトが返されるか、2つの同等の(同一ではない)オブジェクトが返される可能性があります。

        パラメータ:
        name - オブジェクト名の文字列表現。
        戻り値:
        指定されたStringに対応するObjectName。
        例外:
        MalformedObjectNameException - パラメータとして渡された文字列の形式が正しくない場合。
        NullPointerException - nameパラメータがnullの場合。
      • getInstance

        public static ObjectName getInstance​(String domain,
                                             String key,
                                             String value)
                                      throws MalformedObjectNameException

        new ObjectName(domain, key, value)で取得されたオブジェクトを使用できる任意の場所で使用可能なObjectNameのインスタンスを返します。 返されるオブジェクトは、ObjectNameのサブクラスの可能性があります。 同じパラメータを指定してこのメソッドを2回呼び出した場合、同じオブジェクトが返されるか、2つの同等の(同一ではない)オブジェクトが返される可能性があります。

        パラメータ:
        domain - オブジェクト名のドメイン部分。
        key - オブジェクト名のキーのプロパティに含まれる属性。
        value - オブジェクト名のキーのプロパティに含まれる値。
        戻り値:
        指定されたドメイン、キー、および値に対応するObjectName。
        例外:
        MalformedObjectNameException - domainkey、またはvalueに不正な文字が含まれているか、valueがクォートの規則に従っていないか、ドメイン長が許容最大長を超えています。
        NullPointerException - いずれかのパラメータがnullの場合。
      • getInstance

        public static ObjectName getInstance​(String domain,
                                             Hashtable<String,​String> table)
                                      throws MalformedObjectNameException

        new ObjectName(domain, table)で取得されたオブジェクトを使用できる任意の場所で使用可能なObjectNameのインスタンスを返します。 返されるオブジェクトは、ObjectNameのサブクラスの可能性があります。 同じパラメータを指定してこのメソッドを2回呼び出した場合、同じオブジェクトが返されるか、2つの同等の(同一ではない)オブジェクトが返される可能性があります。

        パラメータ:
        domain - オブジェクト名のドメイン部分。
        table - キーのプロパティを1つ以上含むハッシュ・テーブル。 テーブル内の各エントリのキーは、オブジェクト名のキーのプロパティのキー部分。 テーブル内の関連する値は、オブジェクト名の関連する値。
        戻り値:
        指定されたドメインおよびキー・マッピングに対応するObjectName。
        例外:
        MalformedObjectNameException - domainに不正な文字が含まれているか、またはtableのキーまたは値のいずれかに不正な文字が含まれているか、またはtableの値の1つが引用の規則に従っていないか、ドメインの長さが許容最大長を超えています。
        NullPointerException - いずれかのパラメータがnullの場合。
      • getInstance

        public static ObjectName getInstance​(ObjectName name)

        指定されたオブジェクトを使用できる任意の場所で使用可能なObjectNameのインスタンスを返します。 返されるオブジェクトは、ObjectNameのサブクラスの可能性があります。 nameがObjectNameのサブクラスである場合、同じクラスのオブジェクトが返されるとは限りません。

        戻り値はnameと同一とは限りません。 同じパラメータを指定してこのメソッドを2回呼び出した場合、同じオブジェクトが返されるか、2つの同等の(同一ではない)オブジェクトが返される可能性があります。

        ObjectNameは不変なので、ObjectNameのコピーの作成に適していない場合もあります。 このメソッドは主に、重要なコードに予想外の動作をするサブクラスのインスタンスを渡そうとする呼出しなど、悪意を持った呼出しを防止するために使用されます。 重要なコードは、このメソッドを呼び出すことにより、正しく動作することがわかっているObjectNameを取得できます。

        パラメータ:
        name - ObjectNameクラスのインスタンスまたはサブクラスのインスタンス。
        戻り値:
        共通のセマンティックスを持つことがわかっているObjectNameまたはサブクラスのインスタンス。 nameがObjectNameのセマンティックスに従う場合、nameと同等の(ただし同一であるとは限らない)オブジェクトが返される。
        例外:
        NullPointerException - nameがnullの場合。
      • isPattern

        public boolean isPattern()
        オブジェクト名がパターンかどうかをチェックします。

        ドメインにワイルドカードが含まれる場合や、オブジェクト名がプロパティ・パターンの場合、このオブジェクト名はパターンです。

        戻り値:
        名前がパターンである場合はtrue、そうでない場合はfalse。
      • isDomainPattern

        public boolean isDomainPattern()
        オブジェクト名がドメイン部分のパターンであるかどうかをチェックします。
        戻り値:
        名前がドメイン・パターンである場合はtrue、そうでない場合はfalse。
      • isPropertyPattern

        public boolean isPropertyPattern()
        オブジェクト名がキーのプロパティのパターンであるかどうかをチェックします。

        オブジェクト名がキーのプロパティ・リスト(「d:k=v,*」など)またはプロパティ値(「d:k=*」など)あるいはその両方(「d:k=*,*」など)のパターンである場合、オブジェクト名はキーのプロパティ上のパターンになります。

        戻り値:
        名前がプロパティ・パターンである場合はtrue、そうでない場合はfalse。
      • isPropertyListPattern

        public boolean isPropertyListPattern()
        オブジェクト名がキーのプロパティ・リスト上のパターンであるかどうかをチェックします。

        たとえば、「d:k=v,*」と「d:k=*,*」はキーのプロパティ・リストのパターンですが、「d:k=*」はそうではありません。

        戻り値:
        名前がプロパティ・リスト・パターンである場合はtrue、そうでない場合はfalse。
        導入されたバージョン:
        1.6
      • isPropertyValuePattern

        public boolean isPropertyValuePattern()
        オブジェクト名が1つ以上のキー・プロパティの値部分のパターンであるかどうかをチェックします。

        たとえば、「d:k=*」と「d:k=*,*」はプロパティ値のパターンですが、「d:k=v,*」はそうではありません。

        戻り値:
        名前がプロパティ値パターンである場合はtrue、そうでない場合はfalse。
        導入されたバージョン:
        1.6
      • isPropertyValuePattern

        public boolean isPropertyValuePattern​(String property)
        キーのプロパティ内のキーに関連付けられた値がパターンであるかどうかをチェックします。
        パラメータ:
        property - プロパティ。このプロパティの値がチェックされる。
        戻り値:
        指定したキーのプロパティに関連付けられた値がパターンである場合はtrue、そうでない場合はfalse。
        例外:
        NullPointerException - propertyがnullの場合。
        IllegalArgumentException - propertyがこのObjectNameの有効なキーのプロパティではない場合。
        導入されたバージョン:
        1.6
      • getCanonicalName

        public String getCanonicalName()

        正規形式の名前、すなわちプロパティを字句順に並べた文字列表現を返します。

        正確には、ドメイン部分、コロン(:)、キーのプロパティの正規リストパターン表示から成るStringを正規形式の名前と呼びます。

        キーのプロパティの正規リストは、getCanonicalKeyPropertyListString()の説明と同じ文字列です。

        パターン表示は、次のいずれかになります。

        • ObjectNameがプロパティ・リスト・パターンでない場合、空
        • ObjectNameがキーを持たないプロパティ・リスト・パターンである場合、アスタリスク
        • ObjectNameが1つ以上キーを持つプロパティ・リスト・パターンである場合、カンマとアスタリスク(,*)。

        戻り値:
        正規形式の名前。
      • getDomain

        public String getDomain()
        ドメイン部分を返します。
        戻り値:
        ドメイン。
      • getKeyProperty

        public String getKeyProperty​(String property)
        キーのプロパティのキー部分に関連付けられた値を取得します。
        パラメータ:
        property - プロパティ。このプロパティの値が取得される。
        戻り値:
        プロパティの値。このObjectName内に該当するプロパティがない場合はnull。
        例外:
        NullPointerException - propertyがnullの場合。
      • getKeyPropertyList

        public Hashtable<String,​String> getKeyPropertyList()

        キーのプロパティをHashtableとして返します。 戻り値はHashtableです。このテーブル内の個々のキーは、ObjectNameのキーのプロパティ・リストのキーに一致しています。また、テーブル内の値は、キーに関連付けられた値に一致しています。

        戻り値は変更できません。 変更を加えても、このObjectNameに影響はありません。

        戻り値:
        キーのプロパティ・テーブル。
      • getKeyPropertyListString

        public String getKeyPropertyListString()

        作成時に指定した、キーのプロパティのリストの文字列表現を返します。 このObjectNameがコンストラクタObjectName(String)で構築された場合、返されるString内のキーのプロパティは、コンストラクタの引数と同じ順で並べられます。

        戻り値:
        キーのプロパティ・リストの文字列。 この文字列は、ObjectNameがパターンであるかどうかに依存しない。
      • getCanonicalKeyPropertyListString

        public String getCanonicalKeyPropertyListString()
        字句順に並べられたキーのプロパティ・リストの文字列表現を返します。 これは、MBeanをキーのプロパティ・リストから選択する際の字句比較に使用されます。 字句順とは、String.compareTo(String)によって示される順序です。
        戻り値:
        キーのプロパティ・リストの正規文字列。 この文字列は、ObjectNameがパターンであるかどうかに依存しない。
      • toString

        public String toString()

        オブジェクト名の文字列表現を返します。 この文字列の形式は指定されていませんが、2つのObjectNameが等しい場合にのみ、同一の文字列が返されます。

        オーバーライド:
        toString、クラスObject
        戻り値:
        このオブジェクト名の文字列表現。
      • equals

        public boolean equals​(Object object)
        現在のオブジェクト名と別のオブジェクト名を比較します。 2つのObjectNameインスタンスは、これらの正規形式が等しい場合にのみ等価となります。 正規形式は、getCanonicalName()に説明された文字列です。
        オーバーライド:
        equals、クラスObject
        パラメータ:
        object - 現在のオブジェクト名と比較するオブジェクト名。
        戻り値:
        objectがObjectNameで、その正規形式がこのObjectNameの正規形式に等しい場合はtrue。
        関連項目:
        Object.hashCode()HashMap
      • quote

        public static String quote​(String s)

        指定されたStringを、ObjectNameに含めやすいように引用符で囲んだ値を返します。 戻り値は、ObjectName内のキーの値として使用できます。 String sには任意の文字を含めることができます。 引用符の使用方法が適切であれば、戻り値はObjectName内の正当な値です。

        戻り値は、sの文字に対応する文字のシーケンスを引用符("")で囲んだ形式になります。 s内の文字は、次の場合を除いて戻り値内で変更されません。

        • 引用符("")をバックスラッシュ+引用符(")で置き換える。
        • アスタリスク(*)をバックスラッシュ+アスタリスク(\*)で置き換える。
        • 疑問符(?)をバックスラッシュ+疑問符(\?)で置き換える。
        • バックスラッシュ1個をバックスラッシュ2個で置き換える。
        • 復帰改行文字(Javaにおける'\n')をバックスラッシュ+'\n'で置き換える。
        パラメータ:
        s - 引用符で囲まれるString。
        戻り値:
        引用符で囲まれたString。
        例外:
        NullPointerException - sがnullである場合。
      • unquote

        public static String unquote​(String q)

        指定されたStringを引用符で囲まない形式で返します。 qquote(s)によって返されるStringである場合、unquote(q).equals(s)です。 quote(s).equals(q)のString sが存在しない場合、unquote(q)はIllegalArgumentExceptionをスローします。

        これらの規則は、引用符で囲まれた形式と囲まれていない形式が1対1で対応していることを意味しています。

        パラメータ:
        q - 引用符で囲まれないString。
        戻り値:
        引用符で囲まれていないString。
        例外:
        IllegalArgumentException - 引用符(")で囲まれていない場合など、quote(java.lang.String)メソッドがqを返さない場合。
        NullPointerException - qがnullである場合。
      • apply

        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である場合。
      • compareTo

        public int compareTo​(ObjectName name)

        ObjectNameの2つのインスタンスを比較します。 ObjectName間の順序リレーションは、仕様が完全に定められたものではありませんが、ソートされたObjectNamesのリストはユーザーが読みやすい順序で表示されるように意図されています。

        特に、2つの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
        定義:
        compareTo、インタフェースComparable<ObjectName>
        パラメータ:
        name -比較対象のオブジェクト。
        戻り値:
        このObjectNameが指定されたObjectNameより小さい場合は負の整数、等しい場合はゼロ、大きい場合は正の整数。
        導入されたバージョン:
        1.6