Artifactory JCR 7.133.3升级后无法查看仓库,报Unsupported operation: federated错误
Artifactory JCR升级后仓库UI不可见的解决方法
问题描述
将Artifactory JCR从7.125.9版本升级至7.133.3版本后,无法在UI界面查看现有仓库,弹出错误提示Unsupported operation: federated。
错误提示截图:
日志中的堆栈跟踪信息:
2026-01-22T20:48:36.343Z [jfrt ] [ERROR] [2fa9d8ef997d643152f2168d2ba1c7ea] [c.e.m.GlobalExceptionMapper:51] [http-nio-8080-exec-9] - Unsupported operation: federated java.lang.UnsupportedOperationException: Unsupported operation: federated at org.artifactory.federation.DefaultFederatedRepoServiceImpl.getInconsistentRepos(DefaultFederatedRepoServiceImpl.java:356) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:216) at jdk.proxy2/jdk.proxy2.$Proxy173.getInconsistentRepos(Unknown Source) at org.artifactory.ui.rest.service.admin.configuration.repositories.GetRepositoryConfigServiceV2.getPage(GetRepositoryConfigServiceV2.java:63) at org.artifactory.ui.rest.service.admin.configuration.repositories.GetRepositoryConfigServiceV2.execute(GetRepositoryConfigServiceV2.java:49) at org.artifactory.rest.common.service.ServiceExecutor.process(ServiceExecutor.java:39) at org.artifactory.rest.common.resource.BaseResource.runService(BaseResource.java:151) at org.artifactory.rest.common.resource.BaseResource.runService(BaseResource.java:135) at org.artifactory.ui.rest.resource.admin.configuration.repositories.RepoConfigResource.runService(RepoConfigResource.java:375) at org.artifactory.ui.rest.resource.admin.configuration.repositories.RepoConfigResource.getRepositoryConfigByFilters(RepoConfigResource.java:369) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) at org.glassfish.jersey.internal.Errors.process(Errors.java:292) at org.glassfish.jersey.internal.Errors.process(Errors.java:274) at org.glassfish.jersey.internal.Errors.process(Errors.java:244) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.RepoFilter.execute(RepoFilter.java:181) at org.artifactory.webapp.servlet.RepoFilter.doFilter(RepoFilter.java:143) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.LoadHealerFilter.doFilter(LoadHealerFilter.java:42) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.AccessFilter.useAuthentication(AccessFilter.java:604) at org.artifactory.webapp.servlet.AccessFilter.authenticateAndExecute(AccessFilter.java:450) at org.artifactory.webapp.servlet.AccessFilter.doFilterInternal(AccessFilter.java:301) at org.artifactory.webapp.servlet.AccessFilter.doFilter(AccessFilter.java:219) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.ArtifactoryProbesFilter.doFilter(ArtifactoryProbesFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.TrafficFilter.doFilter(TrafficFilter.java:50) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.RequestFilter.lambda$processRequestWithQueryRateLimiter$0(RequestFilter.java:287) at org.artifactory.throttling.qrl.service.QueryRateLimiterServiceImpl.wrapRequestWithLowPriority(QueryRateLimiterServiceImpl.java:453) at org.artifactory.webapp.servlet.RequestFilter.processRequestWithQueryRateLimiter(RequestFilter.java:287) at org.artifactory.webapp.servlet.RequestFilter.doFilter(RequestFilter.java:135) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.ArtifactoryCsrfFilter.doFilter(ArtifactoryCsrfFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:142) at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:82) at org.artifactory.webapp.servlet.SessionFilter.doFilter(SessionFilter.java:87) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.ArtifactoryFilter.doFilter(ArtifactoryFilter.java:133) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.artifactory.webapp.servlet.ArtifactoryTracingFilter.doFilter(ArtifactoryTracingFilter.java:48) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:311) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583)
问题根源是升级后UI代码误调用了仅企业版支持的联合仓库检查接口,而JCR版本不具备该功能,导致抛出异常。
解决方法
1. 临时通过REST API操作仓库
仓库本身状态正常,可直接用REST API替代UI操作:
- 列出所有仓库:
curl -u <用户名>:<密码> http://<Artifactory地址>/artifactory/api/repositories - 执行仓库配置变更、权限管理等操作,参考JFrog官方REST API文档即可。
2. 回滚至7.125.9稳定版本
- 停止当前Artifactory服务
- 备份
$ARTIFACTORY_HOME/data目录和所有配置文件 - 卸载7.133.3版本,重新部署7.125.9版本的JCR安装包
- 启动服务,验证仓库UI恢复正常
3. 清理联合仓库配置残留
- 停止Artifactory服务
- 进入
$ARTIFACTORY_HOME/data目录,查找仓库配置文件(如repositories.xml)或直接检查数据库中的仓库表 - 若发现带有
federated属性的仓库配置,手动移除该属性或删除无效的联合仓库条目 - 重启服务后验证UI是否正常
4. 联系JFrog官方获取补丁
- 提交错误工单,说明JCR版本升级后触发企业版功能调用的问题
- 要求官方提供修复该兼容性bug的补丁包,补丁发布后升级到修复版本即可解决问题
内容的提问来源于stack exchange,提问作者JCox
相关产品推荐
相关产品推荐

