You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Artifactory JCR 7.133.3升级后无法查看仓库,报Unsupported operation: federated错误

Artifactory JCR升级后仓库UI不可见的解决方法

问题描述

将Artifactory JCR从7.125.9版本升级至7.133.3版本后,无法在UI界面查看现有仓库,弹出错误提示Unsupported operation: federated。

错误提示截图:
UI错误提示截图

日志中的堆栈跟踪信息:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 16:37:00