Значение атрибута имени в XML-дескрипторе JBoss MBean

MBean-компоненты JBoss 4/5, такие как NamingAlias, определяются в XML следующим образом.

<mbean code="org.jboss.naming.NamingAlias" name=":service=NamingAlias,fromName=queue/original">
    <attribute name="ToName">queue/linked</attribute>
    <attribute name="FromName">queue/original</attribute>
</mbean>

Обратив внимание на атрибут name=":service=NamingAlias,fromName=queue/original, я вижу параметры service и fromName.

Следуя инструкциям по созданию пользовательского MBean здесь:

https://developer.jboss.org/wiki/ExampleHelloWorldService

Конфигурация XML для созданного MBean:

<server>
  <mbean code="com.acme.HelloWorldService" name="acme.com:service=HelloWorld">
    <attribute name="Message">Hello World</attribute>
  </mbean>
</server>

Я заметил, что в атрибуте имени указано только service.

Является ли обслуживание обязательным для всех бобов? Как насчет добавления дополнительных параметров, таких как fromName? Можно ли использовать эти значения внутри класса, реализующего MBean, или они обязательны?


person Camilo Crespo    schedule 08.10.2014    source источник


Ответы (1)


Атрибут name может быть любым действительным (и уникальным) JMX ИмяОбъекта. Сами по себе ключи и значения не имеют никакого особого значения, кроме их субъективной значимости для разработчика.

В первом примере ObjectName не указывает домен (значение слева от двоеточия), поэтому MBeanServer предполагает домен по умолчанию, которым в данном случае будет jboss, поэтому условно:

:service=NamingAlias,fromName=queue/original  ==  jboss:service=NamingAlias,fromName=queue/original

Имя объекта (и его встроенный домен и ключ/значение) можно использовать внутри класса. В стандартном JMX обычно реализовывается реализация MBeanRegistration, который вводит MBeanServer и ObjectName при регистрации компонента. Однако пример, на который вы ссылаетесь, представляет собой специализированный JBoss ServiceMBean, который делает это автоматически, и ваша реализация будет хранить имя объекта в поле с именем serviceName.

person Nicholas    schedule 08.10.2014