У меня есть класс, который регистрирует / отменяет регистрацию экземпляра MBean, когда пользователь загружает новое состояние приложения. Хотя jmx ObjectName является тем же самым, я отменяю регистрацию в настоящий момент зарегистрированного экземпляра MBean и регистрирую его снова (как ниже)
if(mBeanServer.isRegistered(OBJECT_NAME)) {
mBeanServer.unregisterMBean(OBJECT_NAME);
}
mBeanServer.registerMBean(this, OBJECT_NAME);
После регистрации MBean я получаю обратный вызов в мой класс для связанного MBeanInfo, посредством чего я вернуть новый экземпляр MBeanInfo на основе атрибутов, которые сейчас присутствуют.
Я вижу, что хотя атрибуты, отображаемые через JConsole, верны, если я нажму кнопку refre sh на кнопке JConsole, которую я получу вызов
getAttributes(String[] names)
и предоставленный массив имен содержат как новые атрибуты, так и имена атрибутов для предыдущего объекта MBeanInfo.
Может кто-нибудь объяснить, почему старый объект MBeanInfo не уничтожен когда оригинальный MBean незарегистрирован или я что-то здесь упускаю?