CXF学习(4) 处理无法自动转换的复合数据类型
只贴出服务端代码
1.Service接口类
package com.test.hello;import java.util.Map;import javax.jws.WebService; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;import com.test.util.MineAdapter;@WebService public interface HelloWorld { // public void sayHello();//cxf 不能处理 map 类型,于是我们采用MineAdapter.class进行处理public @XmlJavaTypeAdapter(MineAdapter.class) Map<String,Cat> getMap(); }
2.服务实现类
package com.test.hello;import java.util.HashMap; import java.util.Map;import javax.jws.WebService;@WebService(endpointInterface="com.test.hello.HelloWorld",serviceName="HelloWorldWS") public class HelloWorldImpl implements HelloWorld{private static Map<String,Cat> map;static {map = new HashMap<String, Cat>();map.put("tomcat", new Cat());map.put("garfield", new Cat());}public Map<String,Cat> getMap() {return map;}}
Cat类
package com.test.hello;public class Cat {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;} }
StringCat
package com.test.util;import java.util.ArrayList; import java.util.List;import com.test.hello.Cat;public class StringCat {public static class Entry {private String key;private Cat value;public Entry(String key, Cat value) {this.key=key;this.value=value;}public String getKey() {return key;}public void setKey(String key) {this.key = key;}public Cat getValue() {return value;}public void setValue(Cat value) {this.value = value;}}private List<Entry> entries = new ArrayList<StringCat.Entry>();public List<Entry> getEntries() { return entries;}public void setEntries(List<Entry> entries) {this.entries = entries;}@Overridepublic String toString() {StringBuilder str = null;for (Entry entry : entries) {str.append(entry.getKey() +" : "+entry.getValue());}return str.toString();} }
这是重点,适配器类
package com.test.util;import java.util.HashMap; import java.util.Map;import javax.xml.bind.annotation.adapters.XmlAdapter;import com.test.hello.Cat; import com.test.util.StringCat.Entry;//改转换器就负责完成StringCat与Map的相互转换 public class MineAdapter extends XmlAdapter<StringCat, Map<String,Cat>>{@Overridepublic Map unmarshal(StringCat strngCat) throws Exception {Map result = new HashMap();for(Entry entry : strngCat.getEntries()){result.put(entry.getKey(),entry.getValue());}return result;}@Overridepublic StringCat marshal(Map<String,Cat> map) throws Exception {StringCat stringCat = new StringCat();for (String key : map.keySet()) {stringCat.getEntries().add(new Entry(key,map.get(key)));}return stringCat;} }
最后是运行类
package com.test.hello;import javax.xml.ws.Endpoint;public class ServerMain {public static void main(String[] args) {HelloWorld helloWorldImpl = new HelloWorldImpl();Endpoint.publish("http://localhost:1234/ws", helloWorldImpl);System.out.println("webservice 暴露成功");} }
转载于:https://www.cnblogs.com/heben/p/5408343.html
CXF学习(4) 处理无法自动转换的复合数据类型相关推荐
- Java 基本数据类型的强制转换和自动转换,基本数据类型包装类,Integer常用方法,Integer中equals和==的区别
文章目录 基本数据类型的自动转换 基本数据类型的强制转换 包装类(封装类) Integer类中的方法 一:Number中的xxxValue()方法 二:Integer.parseInt("S ...
- C++ 学习笔记之---类的自动转换
参考自<C++ Primer Plus 6th Edition> 类的自动转换: 说明: C++允许程序员指定类之间进行转换的方式(含基本类型) 站在类的角度看问题,姑且分为&quo ...
- C++(20)--类型自动转换
类型自动转换 1.C++内置类型转换 2.实现自定义类的类型转换 <老九学堂C++课程><C++ primer>学习笔记.<老九学堂C++课程>详情请到B站搜索&l ...
- Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换
Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换 一.各操作系统下文件换行符 二.TortoiseGit下载Github代码关闭文件换行符 三.示例说明 1.开启换行符自动 ...
- 扫描到计算机怎么转换为文字,通过扫描仪对文稿进行扫描,并将其自动转换成计算机可以识别的文字,称为()...
需要借助OCR, (光学字符识别,Optical Character Recognition),是通过图像处理和模式识别技术对光学的字符进行识别的意思,是自动识别技术研究和应用领域中的一个重要方面.它 ...
- 浮点数,字符串入门,基本数据类型自动转换,JDK7新特性, 变量.
8.1 浮点型 **√ **float**类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求. √ ****double表示这种类型的数值精度是floa ...
- java语言中数值自动转换的优先顺序
转换原则:从低精度向高精度转换byte .short.int.long.float.double.char数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中"悄然" ...
- 单据自动转换并审核的方法示例
需求要点:在单据A的界面点击"自动转换",则自动产生审核态的单据B:若单据B不满足审核条件,则维持"提交"态:若单据B不满足保存校验,则维持"暂存&q ...
- C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...
在多线程的程序中,经常会出现两种情况: 一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPo ...
最新文章
- 如何将mysql卸载干净
- linux使用grep获取两个文件相同的行或不同的行
- Think Pad T410键盘溅水有惊无险
- 同事反馈环:为什么度量和会议还不够充分
- Spring Boot——[Spring Boot Configuration Annotation Processor not found in classpath]解决方案
- 苹果7手机严重卡顿_为什么苹果手机运存那么小,却不会卡顿?而安卓却不行!长知识了...
- jQuery图片延迟加载插件jQuery.lazyload
- python中的元组字符串整数浮点数都是不可变的数据类型,Python不可变数据类型总结...
- 易宝支付银行接口,各参数
- 3ds max制作马克杯
- 如果以后找不到工作了,应该干点啥?
- 图标修改器html,Iconoid(桌面图标修改器)
- 【CAD.Net】第四课:添加实体类和符号表到图纸
- Python调用OpenCV实现图像平滑处理
- 删除链表重复节点 python_Word里面如何删除空白页?删除Word空白页的六种方法
- 科技百咖 | 华途少帅谢永胜眼中的数据安全治理
- 公众号如何获得关注粉丝openid?
- webdriver自动化测试工具的使用,将chromedriver配置到path环境变量中,并测试是否成功
- python 拉普拉斯锐化_Python+OpenCV拉普拉斯图像锐化
- 数独求解算法(回溯法和唯一解法)java实现
热门文章
- mysql 事务 myisam,InnoDB和MyISAM的差别(mysql事务处理)
- php+剥去标签,php剥去字符串中的html与xml及php标签的函数strip_tags()
- 从零开始学计算机组装与维修技术,从新手到高手:电脑组装、维护与故障排除...
- vs2013 matlab 教程,Matlab 2016a和VS2013混合Dll编程步骤总结
- Json字符串转对象,使用ObjectMapper方式报错:no String-argument constructor/factory method
- python sort 多级排序_为什么在python中使用排序功能进行多级排序...
- 已经发车的票还能取出来吗_高铁票在车已经开了,但我没上车也没有取票的情况下,还能取出票吗?...
- 在什么的控制下 计算机系统能及时处理,操作系统练习题(1)
- 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)
- 来来来,送开发板了。