이 규칙은 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이 플래그 지정됩니다.
이 규칙에는 빠른 수정사항이 없습니다.
추가 정보는 다음을 참조하십시오.