В моем случае я разработал N веб-приложений, каждое из которых использует общий кэш Infinispan и JGroups в качестве транспортного уровня.
Когда веб-приложение запускается, оно создает объект cachemanager и регистрирует его в JNDI сервера приложений. Следующая запущенная веб-приложение проверяет JNDI и, если находит менеджер кеша, уже связанный другим веб-приложением, использует его с помощью простых вызовов поиска.
Таким образом, первое веб-приложение, создающее экземпляр диспетчера распределенного кеша, должно быть первым действующим лицом, запускающим канал jgroups, то есть координатором.
Проблема возникает, когда:
Мне нужно обновить все веб-приложения путем горячего развертывания с использованием новых войн.
Я аннулирую все войны, уже запущенные на сервере приложений.
Я развертываю новые войны
Все войны успешно развернуты
Через 1 миллисекунду после развертывания балансировщик нагрузки перенаправляет все входящие клиентские запросы в новые доступные службы веб-приложений.
новое вызванное веб-приложение не находит ни одного менеджера кеша, связанного с JNDI, поэтому создает новый. Таким образом, он создает новый канал.
В этот момент я получаю это исключение:
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]