この規則により、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 にフラグが立てられます。
追加情報については、以下を参照してください。