Главная » Spring » Разрешение конфликтов между управляемыми компонентами Spring

0

К настоящему моменту мы познакомились с несколькими спосо- бами экспортирования управляемых компонентов MBean. Во всех случаях мы указывали имя MBean, состоящее из имени домена управления и пары ключ/значение. Если предположить, что перед экспортированием MBean его имя еще не использовалось, то у нас не должно возникать никаких проблем. Но что, если такое имя уже использовалось?

По умолчанию MBeanExporter возбудит исключение InstanceAlready- ExistsException, если управляемый компонент с таким именем уже был экспортирован. Однако такое поведение экспортера можно изменить, определив порядок разрешения конфликтов с помощью свойства registrationBehaviorName компонента MBeanExporter или атри- бута registration  элемента <context:mbean-export>.

Существуют три способа разрешения конфликтов имен, присва- иваемых управляемым компонентам MBean:

# возбудить исключение, если управляемый компонент MBean

с таким именем уже существует (поведение по умолчанию);

# игнорировать конфликт и не экспортировать новый управ- ляемый компонент MBean;

# заменить существующий управляемый компонент MBean но-

вым.

Например, при использовании компонента MBeanExporter его мож- но настроить так, чтобы он игнорировал конфликты, указав в свой- стве registrationBehaviorName значение REGISTRATION_IGNORE_EXISTING, как показано ниже:

<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"/>

<property     name="registrationBehaviorName" value="REGISTRATION_IGNORE_EXISTING"  />

</bean>

В  свойстве  registrationBehaviorName    можно  указать  значение

REGISTRATION_FAIL_ON_EXISTING, REGISTRATION_IGNORE_EXISTING или REGISTRATION_

REPLACING_EXISTING, каждое из которых определяет один из трех воз- можных способов разрешения конфликтов.

При использовании элемента <context:mbean-export>, позволяющего экспортировать управляемые компоненты MBean с помощью анно- таций, метод разрешения конфликтов определяется его атрибутом registration.  Например:

<context:mbean-export  server="mbeanServer" registration="replaceExisting"/>

В атрибуте registration можно указать значение failOnExisting, ignoreExisting или replaceExisting.

Теперь, после регистрации управляемых компонентов MBean с помощью MBeanExporter, необходим некоторый способ, обеспечиваю- щий доступ к ним. Как было показано выше, доступ к локальному серверу MBean и управление компонентами можно осуществлять с помощью таких инструментов, как JConsole. Но эти инструмен- ты не позволяют управлять компонентами MBean программно. Как же тогда реализовать управление компонентами MBean из другого приложения? К счастью, существует другой способ обращения к управляемым компонентам как к удаленным объектам. Посмотрим, как поддержка удаленных управляемых компонентов MBean, имею- щаяся в Spring, позволяет обращаться к ним стандартным способом, через механизмы удаленных взаимодействий.

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

По теме:

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