新安装WSO2 Identity Server 5.10.0启动失败,报NullPointerException错误
问题描述
尝试启动WSO2 Identity Server 5.10.0,执行命令:
[root@ethosdev2 wso2is-5.10.0]# sh bin/wso2server.sh -Dsetup
启动过程中触发以下错误:
[2023-06-19 10:27:06,190] [] ERROR {org.wso2.carbon.consent.mgt.core.internal.ConsentManagerComponent} - Error while activating ConsentManagerComponent. java.lang.NullPointerException at org.wso2.carbon.consent.mgt.core.util.ConsentDBInitializer.createConsentDatabase(ConsentDBInitializer.java:155) at org.wso2.carbon.consent.mgt.core.internal.ConsentManagerComponent.initializeConsentDB(ConsentManagerComponent.java:336) at org.wso2.carbon.consent.mgt.core.internal.ConsentManagerComponent.activate(ConsentManagerComponent.java:90) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345) 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.getEligible(Resolver.java:343) at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:113) at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:985) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:866) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228) at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:525) at org.wso2.carbon.user.core.internal.Activator.startDeploy(Activator.java:73) at org.wso2.carbon.user.core.internal.BundleCheckActivator.start(BundleCheckActivator.java:61) 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.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)
解决思路
该错误是Consent管理组件初始化数据库时触发的空指针异常,可按以下步骤排查修复:
- 检查主数据库配置完整性
确认<IS_HOME>/repository/conf/datasources/master-datasources.xml中WSO2_SHARED_DB的配置参数(url、username、password、driverClassName)无遗漏或拼写错误,空指针大概率是组件无法读取有效数据库连接配置导致。 - 验证数据库用户权限
确保配置的数据库用户拥有建库、建表及执行DDL语句的权限,首次启动使用-Dsetup参数时,该权限是初始化必备条件。 - 确认数据库服务可用性
检查目标数据库(如MySQL、PostgreSQL)是否正常启动,WSO2服务器能否连通数据库端口,可通过数据库客户端或telnet命令测试连接。 - 清理初始化残留
若之前启动失败过,需清理残留数据:- 若使用默认H2数据库,删除
<IS_HOME>/repository/database下的H2文件 - 清空目标数据库中已创建的WSO2相关表,重新执行
-Dsetup启动
- 若使用默认H2数据库,删除
- 核对JDK版本兼容性
WSO2 IS 5.10.0要求使用JDK 8,确认当前环境JDK版本符合要求,避免版本不兼容引发的类加载异常。
内容的提问来源于stack exchange,提问作者P0ffee
相关产品推荐
相关产品推荐

