2012-04-05 3 views
1

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

Домен: имя = myMBean -> Домен: имя = myMBean1, тип = MyType

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

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

+0

Я добавил простой ответ. Если вы можете отредактировать свой вопрос с помощью рамки, которую вы используете, чтобы зарегистрировать свои mbeans, я могу ответить лучше. – Gray

ответ

0

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

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

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

поэтому Вы можете предоставить другой ObjectName:

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

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


Как и в сторону, я не уверен, вы можете переключиться на использование другого рамки JMX, но я положил штрихи на мой Simple JMX system в последнее время. Он позволяет объектам name themselves programmatically, когда они публикуются.

+0

Соответствующий проект - это JOnAS. Для реестров mbeans JOnAS использует API Apache с именем BaseModelMBean с дескриптором mbean. Я не знаю, отвечает ли это на ваш вопрос, у меня еще нет ссылок на эту тему. Изменение именных объектов, как вы описали, является слишком низким уровнем. Мне нужно изменить некоторые mbeans (в зависимости от наличия или отсутствия информации в приложении для развертывания). Итак: 1. Где-то мы хотим зарегистрировать mbean 2. «Что-то» проверьте наличие информации и измените (при необходимости) имя_объекта. 3. Регистрация mbean Остается найти это «что-то» :-). Спасибо заранее. – Mohammed

+0

Извините, я не знаю об этой структуре. Я не уверен, что вы можете переключиться, но я на самом деле в последнее время затронул мою систему Simple JMX. Он позволяет объектам называть себя программным путем: http://256.com/sources/simplejmx/ – Gray

+0

Еще одна сторона моей потребности может быть рассмотрена как «прокси» для MBeanServer по умолчанию. В этом прокси-сервере мы могли обрабатывать запросы. Прокси реализует тот же интерфейс в дополнение к коду, который позволяет обрабатывать mbeans перед реестром, а также для доступа к mbeans (приложение может обращаться только к mbeans, у которых есть type = myType, например). – Mohammed

Смежные вопросы