WSO2 Identity Server 5.11.0与APIM 4.0.0重启后启动异常求助
解决WSO2 APIM 4.0.0与Identity Server作为密钥管理器的启动错误
问题1:WSO2 API Manager重启后的注册表索引错误
重启APIM后出现如下错误:
TID: [-1234] [] [2023-08-08 11:14:22,305] ERROR {org.wso2.carbon.registry.indexing} - [SCR] Exception occurred while unbinding reference Reference[name = registry.service, interface = org.wso2.carbon.registry.core.service.RegistryService, policy = dynamic, cardinality = 1..1, target = null, bind = setRegistryService, unbind = unsetRegistryService] Details: Problematic reference = Reference[name = registry.service, interface = org.wso2.carbon.registry.core.service.RegistryService, policy = dynamic, cardinality = 1..1, target = null, bind = setRegistryService, unbind = unsetRegistryService] of service component = org.wso2.carbon.registry.indexing component implementation class = org.wso2.carbon.registry.indexing.internal.IndexingServiceComponent located in bundle with symbolic name = org.wso2.carbon.registry.indexing bundle location = reference:file:../plugins/org.wso2.carbon.registry.indexing_4.7.39.jar java.lang.reflect.InvocationTargetException at jdk.internal.reflect.GeneratedMethodAccessor64.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.eclipse.equinox.internal.ds.model.ComponentReference.unbind(ComponentReference.java:476) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.unbindReference(ServiceComponentProp.java:617) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.unbind(ServiceComponentProp.java:262) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:350) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473) at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217) at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816) at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783) at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89) at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70) Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.wso2.carbon.registry.indexing.RegistryConfigLoader at org.wso2.carbon.registry.indexing.IndexingManager.<init>(IndexingManager.java:60) at org.wso2.carbon.registry.indexing.IndexingManager.getInstance(IndexingManager.java:71) at org.wso2.carbon.registry.indexing.internal.IndexingServiceComponent.stopIndexing(IndexingServiceComponent.java:128) at org.wso2.carbon.registry.indexing.internal.IndexingServiceComponent.unsetRegistryService(IndexingServiceComponent.java:123) ... 15 more
解决步骤
- 清理APIM临时缓存:删除
<APIM安装目录>/tmp和<APIM安装目录>/work目录,这两个目录存储OSGI运行时缓存,重启服务会自动重建 - 验证注册表配置:检查
<APIM安装目录>/repository/conf/registry.xml文件,确保<indexingConfiguration>节点配置无语法错误,索引相关参数设置正确 - 检查依赖jar包:确认
<APIM安装目录>/plugins下的org.wso2.carbon.registry.indexing_4.7.39.jar文件存在且未损坏,若异常则从官方安装包中替换该文件 - 重启APIM服务:完成上述操作后重新启动API Manager,观察错误是否消除
问题2:WSO2 Identity Server重启后的XML解析错误
重启IS后出现如下错误:
TID: [-1234] [] [2023-08-08 06:42:44,291] [] ERROR {org.wso2.carbon.tomcat.internal.CarbonTomcat} - error while parsing xml stream org.xml.sax.SAXParseException; lineNumber: 37; columnNumber: 93; Error at line [37] column [93]: [org.wso2.carbon.identity.auth.valve.AuthenticationValve] at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1902) at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1934) at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1223) at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source) at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1495) at org.wso2.carbon.tomcat.internal.CarbonTomcat.configure(CarbonTomcat.java:90) at org.wso2.carbon.tomcat.internal.ServerManager.init(ServerManager.java:156) at org.wso2.carbon.tomcat.internal.TomcatBundleActivator.start(TomcatBundleActivator.java:40) at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:842) at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1) at java.base/java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834) at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:791) at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1013) at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365) at org.eclipse.osgi.container.Module.doStart(Module.java:598) at org.eclipse.osgi.container.Module.start(Module.java:462) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$1.run(ModuleContainer.java:1820) at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$2$1.execute(EquinoxContainerAdaptor.java:150) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1813) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1770) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1735) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) Caused by: java.lang.ClassNotFoundException: org.wso2.carbon.identity.auth.valve.AuthenticationValve at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527) at org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:139) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527) at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:104) at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1220) ... 32 more
解决步骤
- 检查Tomcat配置文件:定位到报错提示的第37行对应的XML文件(通常为
<IS安装目录>/repository/conf/tomcat/catalina-server.xml),检查org.wso2.carbon.identity.auth.valve.AuthenticationValve的配置项,确认标签闭合完整、无多余字符 - 补充缺失依赖:检查
<IS安装目录>/plugins目录下是否存在包含org.wso2.carbon.identity.auth.valve.AuthenticationValve类的jar包(通常命名为org.wso2.carbon.identity.auth.valve_*.jar),若缺失则从官方安装包中复制该jar包到对应目录 - 清理IS临时缓存:删除
<IS安装目录>/tmp和<IS安装目录>/work目录,清除缓存后重启Identity Server - 回退配置变更:若之前修改过IS的Tomcat配置,先回退到原始配置,再逐步调整以定位问题根源
内容的提问来源于stack exchange,提问作者Obid Rakhimov
相关产品推荐
相关产品推荐

