cxf处理一些Map等复杂类型
2017-04-05 11:37
288 查看
原网页 http://blog.java1234.com/blog/articles/56.html
前面讲的一些都是简单类型,cxf都支持。但是有些复杂类型,cxf是不支持,比如常用的Map类型;
下面我们在前面的实例基础上在加一个方法,比如我们现在有个需求,获取所有用用户以及对应的每个用户所有角色信息;
服务器端:
HelloWorld接口加方法:
HelloWorldImpl实现类加方法实现:
然后我们启动Server类:发现报错:
![](http://blog.java1234.com/static/userImages/20160222/1456134575421042758.jpg)
这个报错信息说,不支持该类型;
这里我们有好几种解决方案,这里我们用最常用的一种,使用适配器,把cxf不能接受的类型通过适配器,转能接受的类型。
我们使用@XmlJavaTypeAdapter注解,加在接口定义上,完整接口代码如下:
这里参数需要一个实现了XmlAdapter类的适配器类;
这里的话XmlAdapter要加两个参数,XmlAdapter<ValueType,BoundType>
ValueType是cxf能接收的类型,这里我用了数组;
BoundType是cxf不能接受的类型,也就是我例子里的需求的Map类型;
这里大家会看到,还有一个MyRole自定义类型,key:value。我们搞成两个属性,具体实现如下:
OK 这样就行了。我们运行Server类,发布webservice接口:
![](http://blog.java1234.com/static/userImages/20160222/1456134226937065109.jpg)
然后就到了webservice客户端,我们用wsdl2java工具生成下最新代码,具体过程前面讲过,这里不重复讲:
生成代码如下:
![](http://blog.java1234.com/static/userImages/20160222/1456134312484067804.jpg)
我们修改下Client类:
运行下:
![](http://blog.java1234.com/static/userImages/20160222/1456134352140052359.jpg)
OK,这样就实现了复杂类型的调用;
完整代码:http://pan.baidu.com/s/1kTUseOZ
前面讲的一些都是简单类型,cxf都支持。但是有些复杂类型,cxf是不支持,比如常用的Map类型;
下面我们在前面的实例基础上在加一个方法,比如我们现在有个需求,获取所有用用户以及对应的每个用户所有角色信息;
服务器端:
HelloWorld接口加方法:
![](http://blog.java1234.com/static/userImages/20160222/1456134575421042758.jpg)
这个报错信息说,不支持该类型;
这里我们有好几种解决方案,这里我们用最常用的一种,使用适配器,把cxf不能接受的类型通过适配器,转能接受的类型。
我们使用@XmlJavaTypeAdapter注解,加在接口定义上,完整接口代码如下:
ValueType是cxf能接收的类型,这里我用了数组;
BoundType是cxf不能接受的类型,也就是我例子里的需求的Map类型;
这里大家会看到,还有一个MyRole自定义类型,key:value。我们搞成两个属性,具体实现如下:
![](http://blog.java1234.com/static/userImages/20160222/1456134226937065109.jpg)
然后就到了webservice客户端,我们用wsdl2java工具生成下最新代码,具体过程前面讲过,这里不重复讲:
生成代码如下:
![](http://blog.java1234.com/static/userImages/20160222/1456134312484067804.jpg)
我们修改下Client类:
![](http://blog.java1234.com/static/userImages/20160222/1456134352140052359.jpg)
OK,这样就实现了复杂类型的调用;
完整代码:http://pan.baidu.com/s/1kTUseOZ
相关文章推荐
- 6.Web Service CXF处理一些Map等复杂类型
- CXF处理一些Map等复杂类型
- CXF 处理一些Map 等复杂类型
- WS之cxf处理的复杂类型(Map)
- 【WebService】CXF处理javaBean等复合类型以及Map等复杂类型的数据
- 【WebService】CXF处理javaBean等复合类型以及Map等复杂类型的数据
- 【WebService】CXF处理javaBean等复合类型以及Map等复杂类型的数据
- WS之cxf处理的复杂类型(Map)
- 9.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务端发布成功
- 4.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务端业务逻辑层实现类
- 【WebService框架-CXF】——CXF对Map等无法自动转化的类型的处理
- 7.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:转换器1
- 5.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务端domain
- Jackson 处理复杂类型(List,map)两种方法
- Cxf 复杂数据类型(Map)
- CXF webservice JAXB 处理复杂数据类型方法
- webservice学习之处理Map等CXF无法自动转化的类型
- webservice学习之处理Map等CXF无法自动转化的类型
- 解决com.fasterxml.jackson.databind.JsonMappingException: No suitable 以 Jackson 处理复杂类型(List,map)两种方法
- Web service学习cxf版(四)使用cxf处理Map类型----昊哥