将Keycloak升级到11.0.0

如何解决将Keycloak升级到11.0.0

要在所有节点上合并指标,插件将这些值存储在Infinispan缓存中。通过将Keycloak升级到版本11,该插件仅适用于(Infinispan)节点。一旦第二个节点运行,Infinispan似乎在将数据保存到缓存(合并或放置)时找不到缓存类。但是,阅读权限确实有效。

插件自Keycloak 6开始运行,没有任何问题,只有库已更新以匹配Keycloak版本。

一些观察结果:

  • 仅通过一个节点访问infinispan缓存就可以正常工作
  • 第二个节点联机后,缓存将正确同步
  • 在线读取具有两个节点的缓存确实可行
  • 在线访问两个节点的缓存会产生CNF异常
  • 关闭节点并写入正在运行的节点上的缓存确实可以再次工作
  • 重新启动第二个节点,缓存将再次正确同步,但是写入缓存再次崩溃

例外:

slave_1     | [Server:server-two] 07:44:25,147 ERROR [org.infinispan.interceptors.impl.InvocationContextInterceptor] (thread-12,ejb,93ccb1458d37:server-two) ISPN000136: Error executing command ReadWriteKeyCommand on Cache 'metricsCache_bucket_500.0',writing keys [R0VU,Lw==]: org.infinispan.remoting.remoteexception: ISPN000217: Received exception from master:server-one,see cause for remote stack trace
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.ResponseCollectors.wrapremoteexception(ResponseCollectors.java:25)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.ValidSingleResponseCollector.withException(ValidSingleResponseCollector.java:37)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.ValidSingleResponseCollector.addResponse(ValidSingleResponseCollector.java:21)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.impl.SingleTargetRequest.addResponse(SingleTargetRequest.java:72)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.impl.SingleTargetRequest.onResponse(SingleTargetRequest.java:42)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.impl.RequestRepository.addResponse(RequestRepository.java:52)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport.processResponse(jgroupsTransport.java:1435)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport.processMessage(jgroupsTransport.java:1338)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport.access$300(jgroupsTransport.java:132)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport$ChannelCallbacks.up(jgroupsTransport.java:1487)
slave_1     | [Server:server-two]   at org.jgroups.JChannel.up(JChannel.java:784)
slave_1     | [Server:server-two]   at org.jgroups.fork.ForkProtocolStack.up(ForkProtocolStack.java:135)
slave_1     | [Server:server-two]   at org.jgroups.stack.Protocol.up(Protocol.java:306)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FORK.up(FORK.java:142)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FRAG3.up(FRAG3.java:165)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FlowControl.up(FlowControl.java:343)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FlowControl.up(FlowControl.java:343)
slave_1     | [Server:server-two]   at org.jgroups.protocols.pbcast.GMS.up(GMS.java:868)
slave_1     | [Server:server-two]   at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:243)
slave_1     | [Server:server-two]   at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1049)
slave_1     | [Server:server-two]   at org.jgroups.protocols.UNICAST3.addMessage(UNICAST3.java:772)
slave_1     | [Server:server-two]   at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:753)
slave_1     | [Server:server-two]   at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:405)
slave_1     | [Server:server-two]   at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:592)
slave_1     | [Server:server-two]   at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:132)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FailureDetection.up(FailureDetection.java:186)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:254)
slave_1     | [Server:server-two]   at org.jgroups.protocols.MERGE3.up(MERGE3.java:281)
slave_1     | [Server:server-two]   at org.jgroups.protocols.discovery.up(discovery.java:300)
slave_1     | [Server:server-two]   at org.jgroups.protocols.TP.passMessageUp(TP.java:1385)
slave_1     | [Server:server-two]   at org.jgroups.util.SubmitToThreadPool$SingleMessageHandler.run(SubmitToThreadPool.java:87)
slave_1     | [Server:server-two]   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
slave_1     | [Server:server-two]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
slave_1     | [Server:server-two]   at org.jboss.as.clustering.context.ContextReferenceExecutor.execute(ContextReferenceExecutor.java:49)
slave_1     | [Server:server-two]   at org.jboss.as.clustering.context.ContextualExecutor$1.run(ContextualExecutor.java:70)
slave_1     | [Server:server-two]   at java.lang.Thread.run(Thread.java:748)
slave_1     | [Server:server-two] Caused by: java.lang.classNotFoundException: keycloak.metrics.MetricsCache from [Module "org.keycloak.keycloak-model-infinispan" version 11.0.0 from local module loader @3b088d51 (finder: local module finder @1786dec2 (roots: /opt/jboss/keycloak/modules,/opt/jboss/keycloak/modules/system/layers/keycloak,/opt/jboss/keycloak/modules/system/layers/base))]
slave_1     | [Server:server-two]   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
slave_1     | [Server:server-two]   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
slave_1     | [Server:server-two]   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
slave_1     | [Server:server-two]   at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
slave_1     | [Server:server-two]   at org.infinispan.marshall.exts.ThrowableExternalizer.readGenericThrowable(ThrowableExternalizer.java:282)
slave_1     | [Server:server-two]   at org.infinispan.marshall.exts.ThrowableExternalizer.readobject(ThrowableExternalizer.java:259)
slave_1     | [Server:server-two]   at org.infinispan.marshall.exts.ThrowableExternalizer.readobject(ThrowableExternalizer.java:42)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:728)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:709)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:358)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.BytesObjectInput.readobject(BytesObjectInput.java:32)
slave_1     | [Server:server-two]   at org.infinispan.remoting.responses.ExceptionResponse$Externalizer.readobject(ExceptionResponse.java:49)
slave_1     | [Server:server-two]   at org.infinispan.remoting.responses.ExceptionResponse$Externalizer.readobject(ExceptionResponse.java:41)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:728)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:709)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:358)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.objectFromObjectInput(GlobalMarshaller.java:192)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.objectFromByteBuffer(GlobalMarshaller.java:221)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport.processResponse(jgroupsTransport.java:1427)
slave_1     | [Server:server-two]   ... 29 more
slave_1     | [Server:server-two]
slave_1     | [Server:server-two] 07:44:25,158 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-1) Uncaught server error: org.infinispan.remoting.remoteexception: ISPN000217: Received exception from master:server-one,see cause for remote stack trace
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.ResponseCollectors.wrapremoteexception(ResponseCollectors.java:25)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.ValidSingleResponseCollector.withException(ValidSingleResponseCollector.java:37)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.ValidSingleResponseCollector.addResponse(ValidSingleResponseCollector.java:21)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.impl.SingleTargetRequest.addResponse(SingleTargetRequest.java:72)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.impl.SingleTargetRequest.onResponse(SingleTargetRequest.java:42)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.impl.RequestRepository.addResponse(RequestRepository.java:52)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport.processResponse(jgroupsTransport.java:1435)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport.processMessage(jgroupsTransport.java:1338)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport.access$300(jgroupsTransport.java:132)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport$ChannelCallbacks.up(jgroupsTransport.java:1487)
slave_1     | [Server:server-two]   at org.jgroups.JChannel.up(JChannel.java:784)
slave_1     | [Server:server-two]   at org.jgroups.fork.ForkProtocolStack.up(ForkProtocolStack.java:135)
slave_1     | [Server:server-two]   at org.jgroups.stack.Protocol.up(Protocol.java:306)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FORK.up(FORK.java:142)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FRAG3.up(FRAG3.java:165)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FlowControl.up(FlowControl.java:343)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FlowControl.up(FlowControl.java:343)
slave_1     | [Server:server-two]   at org.jgroups.protocols.pbcast.GMS.up(GMS.java:868)
slave_1     | [Server:server-two]   at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:243)
slave_1     | [Server:server-two]   at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1049)
slave_1     | [Server:server-two]   at org.jgroups.protocols.UNICAST3.addMessage(UNICAST3.java:772)
slave_1     | [Server:server-two]   at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:753)
slave_1     | [Server:server-two]   at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:405)
slave_1     | [Server:server-two]   at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:592)
slave_1     | [Server:server-two]   at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:132)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FailureDetection.up(FailureDetection.java:186)
slave_1     | [Server:server-two]   at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:254)
slave_1     | [Server:server-two]   at org.jgroups.protocols.MERGE3.up(MERGE3.java:281)
slave_1     | [Server:server-two]   at org.jgroups.protocols.discovery.up(discovery.java:300)
slave_1     | [Server:server-two]   at org.jgroups.protocols.TP.passMessageUp(TP.java:1385)
slave_1     | [Server:server-two]   at org.jgroups.util.SubmitToThreadPool$SingleMessageHandler.run(SubmitToThreadPool.java:87)
slave_1     | [Server:server-two]   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
slave_1     | [Server:server-two]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
slave_1     | [Server:server-two]   at org.jboss.as.clustering.context.ContextReferenceExecutor.execute(ContextReferenceExecutor.java:49)
slave_1     | [Server:server-two]   at org.jboss.as.clustering.context.ContextualExecutor$1.run(ContextualExecutor.java:70)
slave_1     | [Server:server-two]   at java.lang.Thread.run(Thread.java:748)
slave_1     | [Server:server-two]   Suppressed: org.infinispan.util.logging.TraceException
slave_1     | [Server:server-two]       at org.infinispan.interceptors.impl.SimpleAsyncInvocationStage.get(SimpleAsyncInvocationStage.java:39)
slave_1     | [Server:server-two]       at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invoke(AsyncInterceptorChainImpl.java:246)
slave_1     | [Server:server-two]       at org.infinispan.cache.impl.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1829)
slave_1     | [Server:server-two]       at org.infinispan.cache.impl.CacheImpl.mergeInternal(CacheImpl.java:410)
slave_1     | [Server:server-two]       at org.infinispan.cache.impl.CacheImpl.merge(CacheImpl.java:374)
slave_1     | [Server:server-two]       at org.infinispan.cache.impl.AbstractDelegatingCache.merge(AbstractDelegatingCache.java:465)
slave_1     | [Server:server-two]       at org.infinispan.cache.impl.EncoderCache.merge(EncoderCache.java:748)
slave_1     | [Server:server-two]       at org.infinispan.cache.impl.AbstractDelegatingCache.merge(AbstractDelegatingCache.java:465)
slave_1     | [Server:server-two]       at org.infinispan.Cache.merge(Cache.java:613)
slave_1     | [Server:server-two]       at keycloak.metrics.MetricsCache.recordRequestDuration(MetricsCache.java:212)
slave_1     | [Server:server-two]       at keycloak.metrics.MetricsFilter.filter(MetricsFilter.java:61)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.interception.ContainerResponseContextImpl.filter(ContainerResponseContextImpl.java:357)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.ServerResponseWriter.executeFilters(ServerResponseWriter.java:219)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:95)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:69)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.Synchronousdispatcher.writeResponse(Synchronousdispatcher.java:530)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.Synchronousdispatcher.invoke(Synchronousdispatcher.java:461)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.Synchronousdispatcher.lambda$invoke$4(Synchronousdispatcher.java:229)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.Synchronousdispatcher.lambda$preprocess$0(Synchronousdispatcher.java:135)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:358)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.Synchronousdispatcher.preprocess(Synchronousdispatcher.java:138)
slave_1     | [Server:server-two]       at org.jboss.resteasy.core.Synchronousdispatcher.invoke(Synchronousdispatcher.java:215)
slave_1     | [Server:server-two]       at org.jboss.resteasy.plugins.server.servlet.ServletContainerdispatcher.service(ServletContainerdispatcher.java:245)
slave_1     | [Server:server-two]       at org.jboss.resteasy.plugins.server.servlet.HttpServletdispatcher.service(HttpServletdispatcher.java:61)
slave_1     | [Server:server-two]       at org.jboss.resteasy.plugins.server.servlet.HttpServletdispatcher.service(HttpServletdispatcher.java:56)
slave_1     | [Server:server-two]       at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
slave_1     | [Server:server-two]       at org.keycloak.provider.wildfly.WildFlyRequestFilter.lambda$doFilter$0(WildFlyRequestFilter.java:41)
slave_1     | [Server:server-two]       at org.keycloak.services.filters.AbstractRequestFilter.filter(AbstractRequestFilter.java:43)
slave_1     | [Server:server-two]       at org.keycloak.provider.wildfly.WildFlyRequestFilter.doFilter(WildFlyRequestFilter.java:39)
slave_1     | [Server:server-two]       at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletdispatchingHandler.handleRequest(ServletdispatchingHandler.java:36)
slave_1     | [Server:server-two]       at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
slave_1     | [Server:server-two]       at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.security.SSLinformationAssociationHandler.handleRequest(SSLinformationAssociationHandler.java:132)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
slave_1     | [Server:server-two]       at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
slave_1     | [Server:server-two]       at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
slave_1     | [Server:server-two]       at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
slave_1     | [Server:server-two]       at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
slave_1     | [Server:server-two]       at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
slave_1     | [Server:server-two]       at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
slave_1     | [Server:server-two]       at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
slave_1     | [Server:server-two]       at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
slave_1     | [Server:server-two]       at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
slave_1     | [Server:server-two]       at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletinitialHandler.handleFirstRequest(ServletinitialHandler.java:269)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletinitialHandler.access$100(ServletinitialHandler.java:78)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletinitialHandler$2.call(ServletinitialHandler.java:133)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletinitialHandler$2.call(ServletinitialHandler.java:130)
slave_1     | [Server:server-two]       at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
slave_1     | [Server:server-two]       at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
slave_1     | [Server:server-two]       at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
slave_1     | [Server:server-two]       at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
slave_1     | [Server:server-two]       at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
slave_1     | [Server:server-two]       at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
slave_1     | [Server:server-two]       at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletinitialHandler.dispatchRequest(ServletinitialHandler.java:249)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletinitialHandler.access$000(ServletinitialHandler.java:78)
slave_1     | [Server:server-two]       at io.undertow.servlet.handlers.ServletinitialHandler$1.handleRequest(ServletinitialHandler.java:99)
slave_1     | [Server:server-two]       at io.undertow.server.Connectors.executeRootHandler(Connectors.java:370)
slave_1     | [Server:server-two]       at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
slave_1     | [Server:server-two]       at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
slave_1     | [Server:server-two]       at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
slave_1     | [Server:server-two]       at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
slave_1     | [Server:server-two]       at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1348)
slave_1     | [Server:server-two]       ... 1 more
slave_1     | [Server:server-two] Caused by: java.lang.classNotFoundException: keycloak.metrics.MetricsCache from [Module "org.keycloak.keycloak-model-infinispan" version 11.0.0 from local module loader @3b088d51 (finder: local module finder @1786dec2 (roots: /opt/jboss/keycloak/modules,/opt/jboss/keycloak/modules/system/layers/base))]
slave_1     | [Server:server-two]   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
slave_1     | [Server:server-two]   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
slave_1     | [Server:server-two]   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
slave_1     | [Server:server-two]   at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
slave_1     | [Server:server-two]   at org.infinispan.marshall.exts.ThrowableExternalizer.readGenericThrowable(ThrowableExternalizer.java:282)
slave_1     | [Server:server-two]   at org.infinispan.marshall.exts.ThrowableExternalizer.readobject(ThrowableExternalizer.java:259)
slave_1     | [Server:server-two]   at org.infinispan.marshall.exts.ThrowableExternalizer.readobject(ThrowableExternalizer.java:42)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:728)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:709)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:358)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.BytesObjectInput.readobject(BytesObjectInput.java:32)
slave_1     | [Server:server-two]   at org.infinispan.remoting.responses.ExceptionResponse$Externalizer.readobject(ExceptionResponse.java:49)
slave_1     | [Server:server-two]   at org.infinispan.remoting.responses.ExceptionResponse$Externalizer.readobject(ExceptionResponse.java:41)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:728)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:709)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:358)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.objectFromObjectInput(GlobalMarshaller.java:192)
slave_1     | [Server:server-two]   at org.infinispan.marshall.core.GlobalMarshaller.objectFromByteBuffer(GlobalMarshaller.java:221)
slave_1     | [Server:server-two]   at org.infinispan.remoting.transport.jgroups.jgroupsTransport.processResponse(jgroupsTransport.java:1427)
slave_1     | [Server:server-two]   ... 29 more

MetricsCache确实在初始化时访问CacheManager:

cacheManager = (EmbeddedCacheManager) new InitialContext().lookup("java:jboss/infinispan/container/keycloak");

随后将直接创建缓存:

if (!cacheManager.cacheExists(cacheName)) {
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.clustering().cacheMode(CacheMode.disT_ASYNC);
    cacheManager.defineConfiguration(cacheName,cb.build());
}

cache = cacheManager.getCache(cacheName,true);

读取缓存:

Long value = cache.get(key);

写入缓存:

cache.merge(key,value,Long::sum)

插件module.xml:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="keycloak.metrics-spi">

    <resources>
        <resource-root path="metrics-spi.jar"/>
    </resources>

    <dependencies>
        <module name="org.keycloak.keycloak-core"/>
        <module name="org.keycloak.keycloak-server-spi"/>
        <module name="org.keycloak.keycloak-server-spi-private"/>
        <module name="org.keycloak.keycloak-services"/>
        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
        <module name="javax.api"/>
        <module name="javax.ws.rs.api"/>
        <module name="com.fasterxml.jackson.core.jackson-core"/>
        <module name="com.fasterxml.jackson.core.jackson-databind"/>
        <module name="com.fasterxml.jackson.core.jackson-annotations"/>
        <module name="org.jboss.logging"/>
        <module name="org.infinispan"/>
        <module name="org.infinispan.commons"/>
    </dependencies>
</module>

直到今天,我仍未找到上述例外的解决方案,欢迎任何解决我的问题的提示和想法。

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?