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을 선언할 때는 동일하게 진행해주시면 됩니다!
'Java > JMX' 카테고리의 다른 글
[Java] JMX MBean을 이용한 모니터링(Client, Server) (0) | 2020.05.08 |
---|---|
[Java] JMX Connector의 Server, Client 활용 (0) | 2020.03.18 |
[JAVA] JMX 예제 코드 및 jmxremote properties 설정 (0) | 2020.03.18 |
[JAVA] JMX의 mBean이란? JMX는 무엇인지? (0) | 2020.03.18 |