Ошибка запуска удаленного взаимодействия JGROUPS Transport с использованием Infinispan

В моем случае я разработал N веб-приложений, каждое из которых использует общий кэш Infinispan и JGroups в качестве транспортного уровня.

Когда веб-приложение запускается, оно создает объект cachemanager и регистрирует его в JNDI сервера приложений. Следующая запущенная веб-приложение проверяет JNDI и, если находит менеджер кеша, уже связанный другим веб-приложением, использует его с помощью простых вызовов поиска.

Таким образом, первое веб-приложение, создающее экземпляр диспетчера распределенного кеша, должно быть первым действующим лицом, запускающим канал jgroups, то есть координатором.

Проблема возникает, когда:

  1. Мне нужно обновить все веб-приложения путем горячего развертывания с использованием новых войн.

  2. Я аннулирую все войны, уже запущенные на сервере приложений.

  3. Я развертываю новые войны

  4. Все войны успешно развернуты

  5. Через 1 миллисекунду после развертывания балансировщик нагрузки перенаправляет все входящие клиентские запросы в новые доступные службы веб-приложений.

  6. новое вызванное веб-приложение не находит ни одного менеджера кеша, связанного с JNDI, поэтому создает новый. Таким образом, он создает новый канал.

  7. В этот момент я получаю это исключение:

    15:36:41,742 INFO  [stdout] (AsyncAppender-asyncConsole) org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport
    15:36:41,742 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:248) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
    15:36:41,742 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:588) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
     15:36:41,743 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:554) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
     15:36:41,743 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:424) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
     15:36:41,743 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:397) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
    15:36:41,743 INFO  [stdout] (AsyncAppender-asyncConsole)        at com.society.core.session.SessionManager.<init>(SessionManager.java:162) [core-1.4.0-SNAPSHOT.jar:?]
    15:36:41,744 INFO  [stdout] (AsyncAppender-asyncConsole)        at com.society.core.session.SessionManager.<init>(SessionManager.java:184) [core-1.4.0-SNAPSHOT.jar:?]
    15:36:41,744 INFO  [stdout] (AsyncAppender-asyncConsole)        at com.society.core.auth.filter.KasPrincipalFilter.validateSession(KasPrincipalFilter.java:101) [core-1.4.0-SNAPSHOT.jar:?]
    15:36:41,744 INFO  [stdout] (AsyncAppender-asyncConsole)        at com.society.core.auth.filter.KasPrincipalFilter.doFilter(KasPrincipalFilter.java:54) [core-1.4.0-SNAPSHOT.jar:?]
    15:36:41,745 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,745 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,745 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) [log4j-web-2.6.jar:2.6]
    15:36:41,745 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,745 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,746 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (default task-7) ISPN000078: Starting JGroups channel ISPN
    15:36:41,747 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,748 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,748 WARNING [org.jgroups.jmx.JmxConfigurator] (default task-7) unregistering already registered MBean: org.infinispan2:type=protocol,cluster="ISPN",protocol=FRAG2
    15:36:41,751 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,752 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) [wildfly-undertow-9.0.1.Final.jar!/:9.0.1.Final]
    15:36:41,753 WARNING [org.jgroups.jmx.JmxConfigurator] (default task-7) unregistering already registered MBean: org.infinispan2:type=protocol,cluster="ISPN",protocol=MFC
    15:36:41,764 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,766 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.keycloak.adapters.undertow.UndertowAuthenticatedActionsHandler.handleRequest(UndertowAuthenticatedActionsHandler.java:66) [keycloak-undertow-adapter-1.7.0.Final.jar!/:1.7.0.Final]
    15:36:41,766 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,768 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,768 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,768 WARNING [org.jgroups.jmx.JmxConfigurator] (default task-7) unregistering already registered MBean: org.infinispan2:type=protocol,cluster="ISPN",protocol=UFC
    15:36:41,777 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,778 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,780 WARNING [org.jgroups.jmx.JmxConfigurator] (default task-7) unregistering already registered MBean: org.infinispan2:type=protocol,cluster="ISPN",protocol=GMS
    15:36:41,781 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,781 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,785 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56)[undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,785 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,786 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,788 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (default task-8) ISPN000079: Channel ISPN local address is ws-7-aor-1951, physical addresses are [10.17.36.176:55992]
    15:36:41,786 WARNING [org.jgroups.jmx.JmxConfigurator] (default task-7) unregistering already registered MBean: org.infinispan2:type=protocol,cluster="ISPN",protocol=STABLE
    15:36:41,794 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,798 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,799 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,801 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) [wildfly-undertow-9.0.1.Final.jar!/:9.0.1.Final]
    15:36:41,802 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,803 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.keycloak.adapters.undertow.ServletPreAuthActionsHandler.handleRequest(ServletPreAuthActionsHandler.java:69) [keycloak-undertow-adapter-1.7.0.Final.jar!/:1.7.0.Final]
    15:36:41,805 WARNING [org.jgroups.jmx.JmxConfigurator] (default task-7) unregistering already registered MBean: org.infinispan2:type=protocol,cluster="ISPN",protocol=UNICAST3
    15:36:41,813 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,815 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,821 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    
    15:36:41,824 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)[undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,826 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172) [undertow-servlet-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,828 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    15:36:41,829 INFO  [stdout] (AsyncAppender-asyncConsole)        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774) [undertow-core-1.2.9.Final.jar!/:1.2.9.Final]
    
    15:36:41,829 INFO  [stdout] (AsyncAppender-asyncConsole)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_51]
    15:36:41,829 INFO  [stdout] (AsyncAppender-asyncConsole)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_51]
    15:36:41,830 INFO  [stdout] (AsyncAppender-asyncConsole)        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_51]
    15:36:41,830 INFO  [stdout] (AsyncAppender-asyncConsole) Caused by: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport
    15:36:41,838 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:171) ~[infinispan-commons-7.2.3.Final.jar!/:7.2.3.Final]
    15:36:41,839 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:869) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
    15:36:41,840 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:638) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
    15:36:41,841 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:627) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
    15:36:41,840 WARNING [org.jgroups.jmx.JmxConfigurator] (default task-7) unregistering already registered MBean: org.infinispan2:type=protocol,cluster="ISPN",protocol=NAKACK2
    15:36:41,842 INFO  [stdout] (AsyncAppender-asyncConsole)        at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:530) ~[infinispan-core-7.2.3.Final.jar!/:7.2.3.Final]
    

person Alex    schedule 01.08.2016    source источник
comment
Не могли бы вы вручную отменить развертывание всех приложений и проверить, все ли было успешно отменено как из JNDI, так и из JMX? Возможно, приложения не очищают свои ресурсы должным образом.   -  person Sebastian Łaskawiec    schedule 02.08.2016
comment
проблема исчезает, когда я добавляю это свойство в создание менеджера кеша ConfigurationBuilder builder = new ConfigurationBuilder(); builder.clustering().stateTransfer().awaitInitialTransfer(false); Почему?????   -  person Alex    schedule 03.08.2016
comment
См. ответ, который я дал на аналогичный пост о наличии проблемы с совместным использованием экземпляров CacheManager через JNDI.   -  person Galder Zamarreño    schedule 03.08.2016
comment
К ответу, представленному в посте, я бы добавил, что на самом деле каждое развертывание должно иметь свой собственный диспетчер кеша и внедрять его через CDI в ваше приложение. Если вы действительно хотите обмениваться данными, проще использовать удаленный кеш-сервер, а затем использовать клиентов (наряду с технологией близкого кеширования) для доступа к этим общим данным.   -  person Galder Zamarreño    schedule 03.08.2016