Jboss 6 Cluster Singleton Clustered

Я пытаюсь настроить Jboss 6 в кластерной среде и использовать его для размещения кластерных одноэлементных EJB с отслеживанием состояния.

На данный момент мы успешно установили Singleton EJB в кластере, где разные точки входа в наше приложение (через веб-сайт, развернутый на каждом узле) указывают на единую среду, в которой размещен EJB (таким образом сохраняя состояние статических переменных). Мы достигли этого, используя следующую конфигурацию:

Интерфейс компонента:

@Remote
public interface IUniverse {
  ...
}

Реализация бина:

@Clustered @Stateful
public class Universe implements IUniverse {
  private static Vector<String> messages = new Vector<String>();
  ...
}

Конфигурация jboss-beans.xml:

<deployment xmlns="urn:jboss:bean-deployer:2.0">
    <!-- This bean is an example of a clustered singleton -->
    <bean name="Universe" class="Universe">
    </bean>
    <bean name="UniverseController" class="org.jboss.ha.singleton.HASingletonController">
        <property name="HAPartition"><inject bean="HAPartition"/></property>
        <property name="target"><inject bean="Universe"/></property>
        <property name="targetStartMethod">startSingleton</property>
        <property name="targetStopMethod">stopSingleton</property>
    </bean>
</deployment>

Основная проблема для этой реализации заключается в том, что после того, как главный узел (тот, который содержит состояние одиночного EJB-компонента) корректно завершает работу, состояние одиночного элемента теряется и сбрасывается до значения по умолчанию. Обратите внимание, что все было построено в соответствии с документами JBoss 5 Clustering, так как документов JBoss 6 на эту тему обнаружено не было. Приветствуется любая информация о том, как решить эту проблему или где найти документацию JBoss 6 по кластеризации.


person DanC    schedule 13.03.2011    source источник
comment
Кластеризованные синглтоны с отслеживанием состояния — сложная проблема для решения. Я настоятельно рекомендую вам попробовать перепроектировать вашу систему так, чтобы она вам не нужна, потому что вас ждет мир бритья яков.   -  person skaffman    schedule 13.03.2011


Ответы (1)


Я не думаю, что вам на самом деле нужно «одиночные» сеансовые компоненты с отслеживанием состояния, поскольку способ вызова сеансового компонента с отслеживанием состояния состоит в том, чтобы сохранить полученную ссылку на компонент и вызвать тот же экземпляр ссылки. Кластер серверов приложений будет поддерживать состояние сессионного компонента с отслеживанием состояния, поддерживая сеанс ejb в кластере.

Но, в конце концов, я согласен с тем, что вы можете пересмотреть необходимость использования сеансового компонента с отслеживанием состояния.

person YukunIX    schedule 08.01.2012