Java/JMX

[오류해결] javax.management.NotCompliantMBeanException:

기은P 2020. 8. 24. 10:57
반응형

javax.management.NotCompliantMBeanException: MBean class does not implement DynamicMBean

and neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.vimba.cache.ProfileCache is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.vimba.cache.ProfileCache: Class com.vimba.cache.ProfileCache is not a JMX compliant MXBean)

 

최근 JMX를 사용할 일이 있었는데, 이러한 오류가 발생했었습니다.

따로 코드 잘 못 작성한 것도 없는데?? 뭐지??

구글링을 해본 결과 코드 로직상에는 문제가 없고 단순히 MBean 컨벤션 문제였습니다.

 

JMX를 사용하기 위해서 Object를 등록하는데

Model과 Model의 Function을 정의하는 인터페이스, 총 2가지의 클래스를 만들어야 하는데요.

SampleModel의 인터페이스를 작성을 해야하니 습관적으로 SampleModelImp로 작성을 해서 저런 오류가 발생한다고 하더라고요.(하다하다 인터페이스까지 컨벤션 규칙이 생기다니...)

 

위와 같이 JMX를 사용할 모델의 인터페이스는 끝에 "MBean"을 붙여주셔야지 잘 동작합니다.

 

String mbeanURI = "com.kepco.DF.PM.Model.SampleModel:type=SampleModel";
ObjectName name = new ObjectName(mbeanURI);

 

ObjectName을 선언할 때는 동일하게 진행해주시면 됩니다!

반응형