Jboss 6 Cluster Синглтон кластеризованный - PullRequest
2 голосов
/ 13 марта 2011

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

До сих пор мы успешно установили EJB-компонент Singleton внутри кластера, где различные точки входа в нашПриложение (через веб-сайт, развернутый на каждом узле) указывает на одну среду, в которой размещается 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.

1 Ответ

1 голос
/ 09 января 2012

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

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

...