JavaTM Platform
Standard Ed. 6

javax.management
주석형 DescriptorKey



@Documented 
@Retention (value =RUNTIME )
@Target (value =METHOD )
public @interface DescriptorKey

주석 요소와 Descriptor 내의 필드와의 관계를 기술하는 메타 주석. MBean, MBean 내의 속성, 오퍼레이션, 생성자 , 혹은 오퍼레이션 또는 생성자 의 파라미터용의 Descriptor 를 주석 요소로 할 수 있습니다.

예로서 다음과 같은 주석에 대해 생각합니다.

 @Documented
 @Target(ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
 public @interface Units {
     @DescriptorKey("units")
     String value();
 }
 

이 주석을 다음과 같이 사용할 수 있습니다.

 public interface CacheControlMBean {
     @Units("bytes")
     public long getCacheSize();
 }
 

Standard MBean 가 CacheControlMBean 로부터 작성되는 경우, 일반적으로의 룰에서는,long 형의 CacheSize 라는 이름의 속성이 됩니다. 상기의 정의가 지정되었을 경우,@Units 속성에 의해, 이 속성 MBeanAttributeInfo 에는, 대응하는 값 bytes 를 가지는 units 라는 이름의 필드가 있는 Descriptor 가 포함되게 됩니다.

같이 다음과 같은 주석에 대해 생각합니다.

 @Documented
 @Target(ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
 public @interface Units {
     @DescriptorKey("units")
     String value();

     @DescriptorKey("descriptionResourceKey")
     String resourceKey() default "";

     @DescriptorKey("descriptionResourceBundleBaseName")
     String resourceBundleBaseName() default "";
 }
 

이 주석을, 다음과 같이 사용합니다.

 public interface CacheControlMBean {
     @Units("bytes",
            resourceKey="bytes.key",
            resourceBundleBaseName="com.example.foo.MBeanResources")
     public long getCacheSize();
 }
 

이 경우, 생성되는 Descriptor 에는 다음의 필드가 포함됩니다.

이름
units"bytes"
descriptionResourceKey"bytes.key"
descriptionResourceBundleBaseName "com.example.foo.MBeanResources"

@Units 등의 주석의 적용처를 다음에 나타냅니다.

상기 이외의 주석의 사용법은, 무시됩니다.

인터페이스 주석의 체크는, 친인터페이스상은 아니고, Standard MBean 또는 MXBean 의 관리 인터페이스를 정의하는 인터페이스상에서만 행해집니다. 메소드 주석의 체크는, 그 메소드가 출현하는 가장 한정적인 인터페이스로 행해집니다. 즉, 아이 인터페이스가 친인터페이스로부터의 메소드를 오버라이드(override) 하는 경우, 아이 인터페이스내의 메소드의 @DescriptorKey 주석만이 고려됩니다.

동일한 프로그램 요소상의 다양한 주석이, 이 방법으로 Descriptor 필드에 기여하는 경우, Descriptor 필드는 일치하고 있을 필요가 있습니다. 즉, 2 개(살)이 다른 주석, 또는 1 개의 주석의 2 살의 멤버가, 동일한 Descriptor 필드에 다른 값을 정의할 수 없습니다. 취득 메소드의 주석에 유래하는 필드도, 대응하는 설정 메소드의 주석에 유래하는 필드와 일치하고 있을 필요가 있습니다.

이러한 주석으로부터 생성되는 Descriptor 는, MBean 의 immutableInfo 필드등의, 구현의 제공하는 모든 Descriptor 필드와 머지 됩니다. 주석에 유래하는 필드는, 구현에 의해 제공되는 이러한 필드와 일치하고 있을 필요가 있습니다.

주석 요소를 기술자 필드로 변환하는 경우는, 주석 요소를 Java 언어로 허가되는 임의의 형태로 할 수 있습니다. 다만, 주석 또는 주석의 배열은 제외합니다. 이 필드의 값은, 다음에 나타내도록(듯이) 주석 요소의 값으로부터 이끌립니다.

주석 요소Descriptor 필드
프리미티브(primitive)치 (5,false 등) 랩 된 값 (Integer.valueOf(5),Boolean.FALSE 등)
클래스 정수 (예,Thread.class 등) Class.getName() 로부터 취득한 클래스명 ("java.lang.Thread" 등)
enum 정수 (ElementType.FIELD 등) Enum.name() 로부터 취득한 정수명 ("FIELD" 등)
클래스 정수 또는 enum 정수의 배열 이러한 룰을 각 요소에 적용해 얻을 수 있는 캐릭터 라인 배열
그 외의 형태의 값
(String,String[],int[] 등)
같은 값

도입된 버젼:
1.6

필수 요소의 개요
 String value
           
 

요소의 상세

value

public abstract String  value

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.