Вставить перехватчик MBean

Я работаю над java-проектом, который реализует MBeans, и мне нужно перехватить MBean и изменить/добавить их свойства перед реестром. Пример :

domainName:name=myMBean --> domainName:name=myMBean1,type=myType

Я нашел эту ссылку, в которой показано, как подать заявку перехватчик, отличный от перехватчика по умолчанию, но я понятия не имею, как это сделать в коде.

Заранее спасибо.


person Mohammed    schedule 05.04.2012    source источник
comment
Я добавил простой ответ. Если вы можете отредактировать свой вопрос с помощью структуры, которую вы используете для регистрации своих mbeans, я смогу ответить лучше.   -  person Gray    schedule 05.04.2012


Ответы (1)


Как только вы зарегистрируете бин, очевидно, будет слишком поздно. Проще всего изменить способ регистрации. Если вы покажете нам, какую структуру вы используете для регистрации компонента, я смогу помочь больше.

Обычно все, что делает фактическая регистрация, делает что-то вроде:

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 использует API-интерфейс apache с именем 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