JMX ObjectName エレメント内のダブルスラッシュの使用を削除する

この規則により、javax.management.ObjectName コンストラクターのドメイン部分でダブルスラッシュ「//」が使用された可能性がある場合にフラグを立てます。 JSR 255 では、javax.management.ObjectName のドメイン部分に「カスケード」の分離文字として「//」を使用する計画があります。 JSR 255 は Java SE 6 の一部ではありませんが、ObjectName のドメイン部分には、今後、互換性の問題が生じないように、ストリング「//」を含めないことをお勧めします。

ObjectName は、次のような形式になっています。

domain:key1=value1,key2=value2,key3=value3,*

これに、不定数のキー・プロパティーが伴います。

ご使用のアプリケーションに、ダブルスラッシュを使用したドメイン・ネームを持つ ObjectName の付いた MBean が含まれている場合は、これらの MBean のドメイン・ネームを変更する必要があります。

この規則は、ObjectName コンストラクターを検査し、可能であればストリングのドメイン部分を検査して、ダブルスラッシュがないことを確認します。 これは、ストリング・リテラルや、同じコンパイル単位に定義された final String 変数を渡すコンストラクターをスキャンすることもできます。 ドメイン・ネームを検査できる場合、これは、規則に違反しているコンストラクターだけにフラグを立てます。

この規則は、すぐには検査に使用できない変数としてコーディングされているドメイン・ネームを持つ ObjectName コンストラクターのインスタンスにもフラグを立てます。 ドメイン・ネームにダブルスラッシュが含まれていないことを確認するために、これらのインスタンスを手動で検査してください。

例 1:

公共 MyClass {
インポート javax.management.ObjectName;

ObjectName myObj1 = ObjectName("domain//Name:key1=value1,*");
ObjectName myObj2 = ObjectName("domaiName", "key1", "value1");
ハッシュ・テーブル<String,String> myHashTable = new Hashtable<String,String>();
table.put("key1", "value1");
ObjectName myObj3 = ObjectName("domain//Name", myHashTable");
}

例 1 では、ストリングに「//」が含まれているため、規則によって myObj1 と myObj3 にフラグが立てられます。 myObj2 にはフラグは立てられません。

例2:

公共 MyClass {
インポート javax.management.ObjectName;

final String myDomainName = "domainName";
ObjectName myObj1 = ObjectName(myDomainName, "key1", "value1");

final String myObjectName = "domain//Name:key1=value1";
ObjectName myObj2 = ObjectName(myObjectName);
}

例 2 では、規則によって myObj2 にフラグが立てられますが、myObj1 には立てられません。

例 3:

公共 MyClass {
インポート javax.management.ObjectName;

private ObjectName getMyObjectName(String myObjectName){
ObjectName myObj = ObjectName(myObjectName);
}
}

例 3 では、コードがドメイン・ネームを判別できないため、myObj にフラグが立てられます。

追加情報については、以下を参照してください。