部署WSO2 API Manager新API修订版本时遇异常求助
解决WSO2 API Manager 4.1.0添加API修订版本失败的问题
在WSO2 API Manager 4.1.0中尝试部署API新修订版本时触发如下错误,且无法对该API进行删除、修改操作:
ERROR ApisApiServiceImpl Error while adding new API Revision for API : 22691636-953d-4929-adfc-977c3949bb05 org.wso2.carbon.apimgt.api.APIManagementException: Failed to add revision registry artifacts at org.wso2.carbon.apimgt.impl.APIProviderImpl.addAPIRevision_aroundBody550(APIProviderImpl.java:8850) ~[org.wso2.carbon.apimgt.impl_9.20.74.jar:?] at org.wso2.carbon.apimgt.impl.APIProviderImpl.addAPIRevision(APIProviderImpl.java:8824) ~[org.wso2.carbon.apimgt.impl_9.20.74.jar:?] at org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.addAPIRevision(UserAwareAPIProvider.java:1) ~[org.wso2.carbon.apimgt.impl_9.20.74.jar:?] at org.wso2.carbon.apimgt.rest.api.publisher.v1.impl.ApisApiServiceImpl.createAPIRevision(ApisApiServiceImpl.java:4177) ~[?:?] at org.wso2.carbon.apimgt.rest.api.publisher.v1.ApisApi.createAPIRevision(ApisApi.java:339) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?] at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179) ~[?:?] at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) ~[?:?] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:201) ~[?:?] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:104) ~[?:?] at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) ~[?:?] at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) ~[?:?] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) ~[?:?] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) ~[?:?] at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:265) ~[?:?] at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) ~[?:?] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) ~[?:?] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) ~[?:?] at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225) ~[?:?] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:304) ~[?:?] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:217) ~[?:?]
解决方案
检查注册表权限与存储状态
错误核心是注册表工件添加失败,先排查:- 登录管理控制台,进入注册表 -> 浏览,确认
/_system/governance/apimgt/revisions路径存在,且当前发布者用户拥有读写权限。 - 检查注册表后端数据库(如MySQL、H2)的磁盘空间是否充足,无锁表、连接超时等异常。
- 登录管理控制台,进入注册表 -> 浏览,确认
清理损坏的API修订数据
若修订数据已损坏,手动清理:- 停止WSO2 APIM服务。
- 连接注册表数据库,执行SQL定位目标API的修订记录:
SELECT * FROM AM_API_REVISION WHERE API_UUID = '22691636-953d-4929-adfc-977c3949bb05'; SELECT * FROM AM_API_REVISION_DEPLOYMENT WHERE API_UUID = '22691636-953d-4929-adfc-977c3949bb05'; - 备份数据库后,删除上述查询到的损坏记录。
- 重启APIM服务,尝试重新创建API修订版本。
修复API元数据一致性
当API元数据在注册表与数据库中不一致时:- 登录发布者控制台,导出目标API的定义为JSON文件。
- 删除数据库
AM_API表中对应API_UUID的条目,同时清理注册表/_system/governance/apimgt/apis下的对应API文件夹。 - 重新导入导出的API定义,再尝试创建修订版本。
检查文件系统权限
确认WSO2 APIM运行用户对<APIM_HOME>/repository/registry目录拥有完整读写权限,避免因文件系统权限不足导致注册表操作失败。
内容的提问来源于stack exchange,提问作者bikesh amatya
相关产品推荐
相关产品推荐

