因为工作原因,最近对axis2框架进行一些的研究。因此对框架使用中的一些问题进行记录,方便以后回顾。
系统环境
window7
axis2 1.7.8 / 1.7.4
jdk 1.8
gson 2.8.2
maven 3.5.0
通过官网介绍,axis2原生支持json的方式有两种
一种是基于XML Stream API(这种不符合需求,就没有多做了解)
一种是使用纯json格式,请求与响应都是json格式,也是此次学习的目标。
首先需要在axis2.xml配置
<messageBuilder contentType="application/json"
class="org.apache.axis2.json.gson.JsonBuilder" />
<messageFormatter contentType="application/json"
class="org.apache.axis2.json.gson.JsonFormatter" />
然后在services.xml配置
<messageReceivers>
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
class="org.apache.axis2.json.gson.rpc.JsonRpcMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
class="org.apache.axis2.json.gson.rpc.JsonInOnlyRPCMessageReceiver"/>
</messageReceivers>
启动项目,按照官方案例进行测试,会发现gson格式化出错。
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 14
测试请求数据

本文记录了在使用Axis2框架时遇到的JSON格式交互问题。在配置axis2.xml和服务.xml后,发现Gson解析异常。通过调整JSON数据格式解决了数据解析问题,但随后遇到了NullPointerException。通过查看源码,发现在设置响应数据时,outMessage的一个属性未赋值。于是,自定义了JsonRpcMessageReceiver并重新配置services.xml,成功解决了返回JSON数据的异常,实现了正常的JSON交互。
最低0.47元/天 解锁文章
1566

被折叠的 条评论
为什么被折叠?



