Вмъкнете прехващач на MBean

Работя в java проект, който внедрява MBeans и имам нужда да прихвана MBean и да променя/добавя техните свойства преди регистъра. Пример:

име на домейн: име=myMBean --> име на домейн:name=myMBean1,type=myType

Намерих тази връзка, която представя как да кандидатствам прихващач, различен от прихващача по подразбиране, но нямам представа как да направя това в код.

Благодаря предварително.


person Mohammed    schedule 05.04.2012    source източник
comment
Добавих прост отговор. Ако можете да редактирате въпроса си с рамката, която използвате за регистриране на вашите mbeans, мога да отговоря по-добре.   -  person Gray    schedule 05.04.2012


Отговори (1)


След като регистрираш боба явно е късно. Най-лесното нещо, което можете да направите, е да промените начина на регистрация. Ако ни покажете каква рамка използвате, за да регистрирате bean-а, тогава ще мога да помогна повече.

Обикновено това, което прави действителната регистрация, прави нещо като:

private MBeanServer mbeanServer;
...
mbeanServer.registerMBean(mbean, objectName);

Следователно можете да предоставите различен ObjectName:

ObjectName objectName = new ObjectName("domainName:name=myMBean1,type=myType");

Но предполагам, че не правите регистрацията сами.


Като настрана, не съм сигурен, че можете да превключите към използване на различна JMX рамка, но довърших моите Проста JMX система наскоро. Той позволява на обектите да именуват себе си програмно когато са публикувани.

person Gray    schedule 05.04.2012
comment
Съответният проект всъщност е JOnAS. За mbeans регистър, JOnAS използва apache API с име BaseModelMBean с mbean-дескриптор. Не знам дали това отговаря на въпроса ви, все още нямам много препратки в тази област. Промяната на имена на обекти, както описвате, е твърде ниско ниво. Трябва да променя някои mbeans (в зависимост от наличието или не на информация в приложението за внедряване). И така: 1. Някъде искаме да регистрираме mbean 2. Нещо да провери наличието на информацията и да промени (ако е необходимо) името на обекта. 3. Регистрирайте mbean Остава да намерите това нещо :-). Благодаря предварително. - person Mohammed; 06.04.2012
comment
Съжалявам, не знам за тази рамка. Не съм сигурен, че можете да превключите, но всъщност наскоро поставих последните щрихи на моята Simple JMX система. Той позволява на обектите да се наименуват програмно: 256.com/sources/simplejmx - person Gray; 06.04.2012
comment
Друга страна на моята нужда може да се разглежда като прокси на MBeanServer по подразбиране. В този прокси можем да обработваме заявки. Проксито ще имплементира същия интерфейс в допълнение към код, който позволява обработка на mbeans преди системния регистър, а също и достъп до mbeans (приложението може да има достъп само до mbeans, които имат type=myType например). - person Mohammed; 06.04.2012