Главная » Spring » Экспортирование методов по их именам Spring

0

Ключом к ограничению набора экспортируемых операций и атрибутов управляемого компонента  является  сборщик  информа- ции MBean (MBean info assembler). Одним из таких сборщиков ин- формации является MethodNameBasedMBeanInfoAssembler. Ему передается список имен методов, которые должны экспортироваться в виде опе- раций управляемого компонента MBean. В случае с компонентом HomeController нам требуется экспортировать атрибут spittlesPerPage. Сможет ли помочь в этом сборщик, экспортирующий методы?

Согласно правилам JavaBean (которые относятся не только к компонентам Spring), атрибут spittlesPerPage может называться свойством только при наличии методов доступа к нему с именами setSpittlesPerPage()  и getSpittlesPerPage(). Чтобы ограничить круг экс-

портируемых атрибутов нашего управляемого компонента MBean, необходимо сообщить компоненту MethodNameBasedMBeanInfoAssembler, что интерфейс управляемого компонента будут составлять только эти методы. Следующее объявление компонента MethodNameBasedMBean- InfoAssembler   содержит только требуемые методы:

<bean  id="assembler"

class="org.springframework.jmx.export.assembler.

➥MethodNameBasedMBeanInfoAssembler" p:managedMethods="getSpittlesPerPage,setSpittlesPerPage"     />

Свойство managedMethods определяет список имен методов, которые должны экспортироваться как операции управляемого компонента MBean. Поскольку эти методы являются методами доступа к свой- ству spittlesPerPage, это приводит к тому, что свойство становится атрибутом управляемого компонента MBean.

Чтобы задействовать компонент MethodNameBasedMBeanInfoAssembler, его необходимо внедрить в компонент MBeanExporter:

<bean  id="mbeanExporter" class="org.springframework.jmx.export.MBeanExporter">

<property  name="beans">

<map>

<entry  key="spitter:name=HomeController" value-ref="homeController"/>

</map>

</property>

<property  name="server"  ref="mbeanServer"  />

<property  name="assembler"  ref="assembler"/>

</bean>

Если теперь запустить приложение, для управления будет до- ступен только атрибут spittlesPerPage компонента HomeController. На рис. 14.3 показано, как это выглядит в окне JConsole.

Существует еще один сборщик информации, MethodExclusionMBeanI nfoAssembler, позволяющий ограничивать перечень экспортируемых методов. Этот сборщик является полной противоположностью сбор- щику MethodNameBasedMBeanInfoAssembler – он определяет, какие методы не должны экспортироваться как операции управляемого компонен- та. Например, ниже показано, как с помощью MethodExclusionMBeanInf

Рис. 14.3. После явного определения экспортируемых методов управляемого компонента HomeController метод showHomePage() оказывается недоступным для внешнего мира

oAssembler исключить метод showHomePage() из числа экспортируемых операций:

<bean  id="assembler"

class="org.springframework.jmx.export.assembler.

➥MethodExclusionMBeanInfoAssembler" p:ignoredMethods="showHomePage"   />

Сборщики информации весьма просты в использовании. Но представьте ситуацию, когда необходимо экспортировать несколь- ко компонентов Spring. Список имен методов может стать просто огромным. Кроме того, может так случиться, что потребуется экс- портировать некоторый метод одного компонента и исключить экс- портирование одноименного метода другого компонента.

Очевидно, что прием, основанный на перечислении имен методов, не годится, когда требуется экспортировать множество управляемых компонентов MBean. Посмотрим, может быть, использование интер-

фейсов, перечисляющих экспортируемые методы, лучше подходит для таких ситуаций.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии