この規則は、 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:
|
public MyClass {
import javax.management.オブジェクト名; ObjectName myObj1 = ObjectName("domain//Name:key1=value1,*"); ObjectName myObj2 = ObjectName("domaiName", "key1", "value1"); Hashtable<String,String> myHashTable = new Hashtable<String,String>(); table.put("key1", "value1"); ObjectName myObj3 = ObjectName("domain//Name", myHashTable"); } |
例 1 では、これらのストリングは"//". が含まれるために、この規則はmyObj1 およびmyObj3をフラグを立てます。しかし myObj2はフラグが立てられません。
例 2:
|
public MyClass {
import javax.management.オブジェクト名; 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:
|
public MyClass {
import javax.management.オブジェクト名; private ObjectName getMyObjectName(String myObjectName){ ObjectName myObj = ObjectName(myObjectName); } } |
例 3 では、コードがドメイン・ネームを判別できないため、myObj にフラグが立てられます。
この規則に対するクイック・フィックスはありません。
追加情報については、以下を参照してください。