[오류해결] javax.management.NotCompliantMBeanException:
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을 선언할 때는 동일하게 진행해주시면 됩니다!