Кластерный синглтон с использованием Wildfly?

Я пытаюсь создать простой кластерSingleton на Wildfly 8.2. Я настроил 2 экземпляра Wildfly, работающих в автономной кластерной конфигурации. Мое приложение развернуто на обоих устройствах, и я могу без проблем получить к нему доступ.

Мой кластерный EJB выглядит так:

@Named
@Clustered
@Singleton
public class PeekPokeEJB implements PeekPoke {

    /**
     * Logger for this class
     */
    private static final Logger logger = Logger
            .getLogger(PeekPokeEJB.class);

    private static final long serialVersionUID = 2332663907180293111L;

    private int value = -1;

    @Override
    public void poke() {
        if (logger.isDebugEnabled()) {
            logger.debug("poke() - start"); //$NON-NLS-1$
        }

        Random rand = new SecureRandom();
        int newValue = rand.nextInt();
        if (logger.isDebugEnabled()) {
            logger.debug("poke() - int newValue=" + newValue); //$NON-NLS-1$
        }

        this.value = newValue;

        if (logger.isDebugEnabled()) {
            logger.debug("poke() - end"); //$NON-NLS-1$
        }
    }

    @Override
    public void peek() {
        if (logger.isDebugEnabled()) {
            logger.debug("peek() - start"); //$NON-NLS-1$
        }

        if (logger.isDebugEnabled()) {
            logger.debug("peek() - value=" + value); //$NON-NLS-1$
        }

        if (logger.isDebugEnabled()) {
            logger.debug("peek() - end"); //$NON-NLS-1$
        }
    }
}

... и я написал очень простой сервис RESTful, позволяющий мне вызывать эти методы через браузер ...

@Path("/test")
@Named
public class TestRS extends AbstractRestService {
    /**
     * Logger for this class
     */
    private static final Logger logger = Logger.getLogger(TestRS.class);

    @Inject
    private PeekPoke ejb = null;

    @GET
    @Path("/poke")
    public void poke() {
        if (logger.isDebugEnabled()) {
            logger.debug("poke() - start"); //$NON-NLS-1$
        }

        this.ejb.poke();

        if (logger.isDebugEnabled()) {
            logger.debug("poke() - end"); //$NON-NLS-1$
        }
    }

    @GET
    @Path("/peek")
    public void peek() {
        if (logger.isDebugEnabled()) {
            logger.debug("peek() - start"); //$NON-NLS-1$
        }

        this.ejb.peek();

        if (logger.isDebugEnabled()) {
            logger.debug("peek() - end"); //$NON-NLS-1$
        }
    }
}

Я могу позвонить какpeek а такжеpoke методы из одного экземпляра Wildfly и получить ожидаемое значение. Однако, если я пытаюсь вызвать poke из одного экземпляра и посмотреть из другого, я вижу, что значения не реплицируются по всем EJB-компонентам.

У меня сложилось впечатление, что кластерный синглтон будет повторять значениеvalueна обоих серверах приложений, предоставляя одно и то же значение независимо от того, на каком хосте я сделалpeek позвонить с. Это не правильно? Я что-то упускаю, что еще нужно добавить в этот код?

Буду признателен за любую помощь, которую вы можете оказать мне! Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос