JMX ObjectName 요소에서 이중 슬래시 사용 제거

이 규칙은 javax.managementObjectName 생성자의 도메인 부분에서 이중 슬래시 "//"의 잠재적 사용에 플래그를 지정합니다. JSR 255는 "케스케이딩"에 대한 구분 기호로 javax.management.ObjectName의 도메인 파트에서 "//"를사용할 계획입니다. JSR 255가 Java SE 6의 파트가 아니지만 향후 호환성 문제를 피하도록 ObjectName의 도메인 파트에 "//" 문자열을 포함하지 마십시오.

ObjectNames의 형식은 다음과 같습니다.

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

핵심 특성의 변수 숫자를 가집니다.

사용자 애플리케이션이 이중 슬래시가 있는 도메인 이름의 ObjectNames과 함께 MBeans을 포함하는 경우 해당 MBeans에 대해 도메인 이름을 변경해야 합니다.

이 규칙은 ObjectName 생성자를 검사하며 가능한 경우 이중 슬래시가 없는지 확인하도록 문자열의 도메인 파트를 확인합니다. 규칙은 동일한 컴파일 단위에 정의된 final 문자열 변수 또는 문자열 리터럴을 전달하는 생성자를 스캔할 수 있습니다. 도메인 이름을 검사할 수 있는 경우 규칙을 위반하는 생성자만 플래그 지정합니다.

규칙은 또한 검사할 수 없는 변수로 코딩된 도메인 이름을 가진 ObjectName 생성자의 인스턴스를 플래그 지정합니다. 도메인 이름에 이중 슬래시가 없는지 확인하려면 이러한 인스턴스를 수동으로 검사해야 합니다.

예제 1:

public MyClass {
import javax.management.ObjectName;

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.ObjectName;

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

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

예제 2에서 규칙은 myObj1이 아닌 myObj2를 플래그 지정합니다.

예제 3:

public MyClass {
import javax.management.ObjectName;

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

예제 3에서 코드가 도메인 이름을 판별할 수 없으므로 myObj이 플래그 지정됩니다.

이 규칙에는 빠른 수정사항이 없습니다.

추가 정보는 다음을 참조하십시오.