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

WSO2 AM 4.3.0禁用OpenAPI验证后调用API遇空指针错误求助

问题:WSO2 API Manager 4.3.0导入旧API后调用出现NullPointerException

我使用WSO2 API Manager 4.3.0,为导入存在验证错误的旧API,通过启动参数-DswaggerRelaxedValidation=true禁用了OpenAPI验证。但调用API时出现NullPointerException,API无法响应,错误日志如下:

ERROR - ServerWorker Error processing GET request for : /xxxx/xxxx. 
java.lang.NullPointerException: null
        at io.swagger.v3.parser.converter.SwaggerConverter.lambda$addProperties$11(SwaggerConverter.java:1268) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684) ~[?:?]
        at io.swagger.v3.parser.converter.SwaggerConverter.addProperties(SwaggerConverter.java:1267) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:1225) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:865) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:635) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:535) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:250) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at io.swagger.v3.parser.converter.SwaggerConverter.readResult(SwaggerConverter.java:104) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at io.swagger.v3.parser.converter.SwaggerConverter.readContents(SwaggerConverter.java:99) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at io.swagger.parser.OpenAPIParser.readContents(OpenAPIParser.java:29) ~[swagger-parser_2.1.20.wso2v1.jar:?]
        at org.wso2.carbon.apimgt.gateway.handlers.common.APIMgtLatencyStatsHandler.setSwaggerToMessageContext_aroundBody8(APIMgtLatencyStatsHandler.java:134) ~[org.wso2.carbon.apimgt.gateway_9.29.120.jar:?]
        at org.wso2.carbon.apimgt.gateway.handlers.common.APIMgtLatencyStatsHandler.setSwaggerToMessageContext(APIMgtLatencyStatsHandler.java:1) ~[org.wso2.carbon.apimgt.gateway_9.29.120.jar:?]
        at org.wso2.carbon.apimgt.gateway.handlers.common.APIMgtLatencyStatsHandler.handleRequest_aroundBody4(APIMgtLatencyStatsHandler.java:98) ~[org.wso2.carbon.apimgt.gateway_9.29.120.jar:?]
        at org.wso2.carbon.apimgt.gateway.handlers.common.APIMgtLatencyStatsHandler.handleRequest(APIMgtLatencyStatsHandler.java:1) ~[org.wso2.carbon.apimgt.gateway_9.29.120.jar:?]
        at org.apache.synapse.api.API.process(API.java:407) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.synapse.api.AbstractApiHandler.apiProcessNonDefaultStrategy(AbstractApiHandler.java:109) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.synapse.api.AbstractApiHandler.identifyAPI(AbstractApiHandler.java:129) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.synapse.api.AbstractApiHandler.dispatchToAPI(AbstractApiHandler.java:61) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.synapse.api.rest.RestRequestHandler.dispatchToAPI(RestRequestHandler.java:90) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.synapse.api.rest.RestRequestHandler.process(RestRequestHandler.java:76) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:54) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:350) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:101) ~[synapse-core_4.0.0.wso2v105.jar:4.0.0-wso2v105]
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) ~[axis2_1.6.1.wso2v76.jar:?]
        at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:401) ~[synapse-nhttp-transport_4.0.0.wso2v105.jar:?]
        at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:215) ~[synapse-nhttp-transport_4.0.0.wso2v105.jar:?]
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) ~[axis2_1.6.1.wso2v76.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at java.lang.Thread.run(Thread.java:834) ~[?:?]

解决方向

  • 修复API定义中的空值问题:堆栈信息显示错误出在SwaggerConverter处理属性环节,说明旧API定义的properties节点下存在空值(比如某个属性键对应null值)。检查并清理Swagger/OpenAPI定义里的空属性项,或者补全缺失的属性内容。
  • 临时禁用延迟统计处理器:若需紧急恢复API可用性,可尝试禁用APIMgtLatencyStatsHandler。在网关配置文件repository/deployment/server/synapse-configs/default/api/_TokenAPI_.xml(或对应API的Synapse配置文件)中,移除或注释该处理器的配置。注意此操作会关闭延迟统计功能,仅作为临时方案。
  • 升级Swagger Parser依赖包:当前使用的swagger-parser_2.1.20.wso2v1.jar可能存在空指针bug,可替换为兼容WSO2 AM 4.3.0的更高版本定制Swagger Parser jar包。
  • 修复API定义后重新导入:即使禁用验证,有缺陷的API定义仍会在运行时解析出错。建议先在本地用Swagger Editor或OpenAPI验证工具修复定义问题,确保无空值、格式错误后再导入,无需依赖swaggerRelaxedValidation参数。

内容的提问来源于stack exchange,提问作者Lilan Mihiranga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:54:56