2011-04-05 3 views
3

알림을 내보내는 MBean을 정의 할 때 특히 알림 유형을 찾는 지침을 찾고 있습니다. 오라클 사이트의 JMX Best Practices은 다음과 같이 말합니다. 하지만 조금 오래되었고 Java6 이전 버전입니다.JMX 알림을 방출하는 모범 사례

알림은 javax.management.Notification의 인스턴스이거나 javax.management 네임 스페이스의 서브 클래스 중 하나 여야합니다. 이러한 서브 클래스 중 하나에 들어 가지 않는 정보는 setUserData 메소드를 사용하여 통지에 CompositeData를 첨부하여 전달해야합니다.

오라클 사이트에서도 Weblogic이 자체 서브 클래스 중 일부를 정의합니다. WebLogicLogNotification. 그 Best Practices 상태 :

모든 JMX 알림 개체는 javax.management.Notification 개체 형식을 확장합니다. JMX 및 WebLogic Server는 javax.management.AttributeChangeNotification과 같은 추가 알림 객체 유형을 정의합니다. 추가 오브젝트 유형에는 여러 유형의 이벤트에 적합한 특수 정보 세트가 들어 있습니다. WLS 같은

우리의 통지는 우리가 통지와 전달하고자하는 정보에 대한 사용자 정의 게터와 우리 자신의 서브 클래스를 정의하는 고려, 표준 서브 클래스 중 하나를 맞지 않습니다. 아니면 기본 javax.management.Notification을 사용하고 제네릭 setUserData (Object)를 사용하여 정보를 첨부하는 것이 좋습니다. 후자를 수행하면 Object가 CompositeData와 같은 JMX 유형이어야한다고 가정합니다. 소비자의 관점에서 생각하는 것이 더 좋을까요?

편집 : 소비자보기에서 사용자 지정 하위 클래스의 단점은 응용 프로그램/클래스 경로에 포함시켜야한다는 것입니다.

답변

4

jmx에서 사용자 정의 데이터 유형을 사용하는 것이 거의 항상 나쁜 생각입니다. 매우 제한입니다. 열린 유형을 고수하고 모든 jmx 클라이언트 (java 또는 기타)가 데이터를 사용할 수 있습니다.

참고, "사용자 정의 bean"< -> "열린 유형"변환의 일종을 수행하는 일부 도우미 클래스를 제공 할 수 있습니다. 도우미 클래스에 액세스 할 수있는 클래스는 이러한 편의 메서드 (예 : ThreadInfo.from())를 사용할 수 있지만 외부 코드 및 Java 코드는 여전히 데이터를 사용할 수 있습니다.