Я использую ванильный сервер JBossAS 6 с парой проектов для тестирования функциональности кластерных сред JBoss.Проблема, с которой я столкнулся, заключается в том, что если я передам ссылку на EJB из одного EJB (другого типа) в узле на экземпляр того же типа в другом узле, при вызове метода выдается исключение, заявляющее, что long_alphanumeric_key ключ для указанного компонента не зарегистрирован в кэше (InfinispanStatefulCache).
Дело в том, что при использовании аннотации Singleton вместо аннотации Stateful на объекте, который мне нужно перенести, переданные объекты работают безупречно, успешно вызывая методы общего EJB-компонента на сервере, где он был создан.Проблема в том, что этот случай имеет тот же недостаток, что и HA-Singleton.Все переданные ссылки были получены ранее путем поиска по дереву HA-JNDI.
Некоторое понимание того, чего я пытаюсь достичь:
Что мне в данный момент нужно, так эторазделять один экземпляр Stateful EJB между узлами, например HA-Singleton.Причина, по которой не используется HA-Singleton, заключается в том, что состояние этого типа синглетонов поддерживается исключительно на главном узле кластера, поэтому, если узел отключается или происходит сбой, состояние экземпляра теряется.
Использование bean-компонента Stateful позволило бы мне поддерживать состояние в кластере, предотвращая тем самым потерю состояния при сбое на узле.Я еще не до конца понял, как работает кэш JBoss и Infinispan, но насколько я прочитал, @ Clustered аннотированное состояние bean-компонентов автоматически реплицируется в кластере.
Мы уже были предупреждены о проблемах использования Singletons и HA-Singletons в текущей версии JBoss, поэтому любые документы или шаблоны, помогающие решить эту проблему, будут приветствоваться.
Кроме того, я был бы признателенлюбая документация, которая может дать мне представление о том, как работает кэш Infinispan и кластеризация JBoss.До сих пор материал, который я читал, был смешан со старыми версиями JBoss, где вместо Infinispan использовался JBossCache.
Спасибо заранее,
Немецкий