在WSO2 Integration Studio中创建集成时出现运行时错误
解决WSO2 Data Mapper Mediator的NullPointerException问题
错误详情
ERROR {SequenceMediator} - {api:StagingIntegration} Runtime error occurred while mediating the message java.lang.NullPointerException at java.base/java.io.Reader.<init>(Reader.java:167) at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:72) at org.wso2.carbon.mediator.datamapper.engine.input.readers.JSONInputReader.readFromInputStream(JSONInputReader.java:79) at org.wso2.carbon.mediator.datamapper.engine.input.readers.JSONInputReader.read(JSONInputReader.java:59) at org.wso2.carbon.mediator.datamapper.engine.input.InputBuilder.buildInputModel(InputBuilder.java:59) at org.wso2.carbon.mediator.datamapper.engine.core.mapper.MappingHandler.doMap(MappingHandler.java:90) at org.wso2.carbon.mediator.datamapper.DataMapperMediator.transform(DataMapperMediator.java:438) at org.wso2.carbon.mediator.datamapper.DataMapperMediator.mediate(DataMapperMediator.java:314) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:242) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:820) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:322) at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:627) at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:208) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:298) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)
问题分析
从堆栈轨迹可以看出,空指针异常发生在JSONInputReader.readFromInputStream方法中,本质是传递给JSON输入读取器的输入流为null,意味着Data Mapper Mediator执行时没有获取到有效的消息内容。
排查与解决步骤
- 确认消息体存在:在Data Mapper Mediator前添加Log Mediator,配置打印
$body或$ctx:MESSAGE_PAYLOAD,验证执行到Data Mapper时消息体不为空。 - 检查输入数据源配置:如果Data Mapper不是使用默认的消息体,而是自定义属性作为输入,需确认该属性已通过Property Mediator正确赋值,且值不为null。
- 排查前置Mediator影响:检查序列中Data Mapper之前的所有Mediator(如Callout、PayloadFactory、Filter等),确保它们没有清空消息体,或处理后正确传递了完整消息。
- 验证输入数据格式:Data Mapper配置的输入类型为JSON,需确保实际输入是合法的JSON数据,而非空字符串、XML或其他非JSON格式内容。
- 启用调试模式:开启Synapse调试,逐步跟踪消息在每个Mediator处理后的状态,定位消息体丢失的具体环节。
内容的提问来源于stack exchange,提问作者user21348790
相关产品推荐
相关产品推荐

