只贴出服务端代码

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) 处理无法自动转换的复合数据类型相关推荐

  1. Java 基本数据类型的强制转换和自动转换,基本数据类型包装类,Integer常用方法,Integer中equals和==的区别

    文章目录 基本数据类型的自动转换 基本数据类型的强制转换 包装类(封装类) Integer类中的方法 一:Number中的xxxValue()方法 二:Integer.parseInt("S ...

  2. C++ 学习笔记之---类的自动转换

    参考自<C++ Primer Plus 6th Edition> 类的自动转换: 说明:    C++允许程序员指定类之间进行转换的方式(含基本类型) 站在类的角度看问题,姑且分为&quo ...

  3. C++(20)--类型自动转换

    类型自动转换 1.C++内置类型转换 2.实现自定义类的类型转换 <老九学堂C++课程><C++ primer>学习笔记.<老九学堂C++课程>详情请到B站搜索&l ...

  4. Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换

    Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换 一.各操作系统下文件换行符 二.TortoiseGit下载Github代码关闭文件换行符 三.示例说明 1.开启换行符自动 ...

  5. 扫描到计算机怎么转换为文字,通过扫描仪对文稿进行扫描,并将其自动转换成计算机可以识别的文字,称为()...

    需要借助OCR, (光学字符识别,Optical Character Recognition),是通过图像处理和模式识别技术对光学的字符进行识别的意思,是自动识别技术研究和应用领域中的一个重要方面.它 ...

  6. 浮点数,字符串入门,基本数据类型自动转换,JDK7新特性, 变量.

    8.1 浮点型 **√ **float**类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求. √ ****double表示这种类型的数值精度是floa ...

  7. java语言中数值自动转换的优先顺序

    转换原则:从低精度向高精度转换byte .short.int.long.float.double.char数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中"悄然" ...

  8. 单据自动转换并审核的方法示例

    需求要点:在单据A的界面点击"自动转换",则自动产生审核态的单据B:若单据B不满足审核条件,则维持"提交"态:若单据B不满足保存校验,则维持"暂存&q ...

  9. C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

最新文章

  1. 如何将mysql卸载干净
  2. linux使用grep获取两个文件相同的行或不同的行
  3. Think Pad T410键盘溅水有惊无险
  4. 同事反馈环:为什么度量和会议还不够充分
  5. Spring Boot——[Spring Boot Configuration Annotation Processor not found in classpath]解决方案
  6. 苹果7手机严重卡顿_为什么苹果手机运存那么小,却不会卡顿?而安卓却不行!长知识了...
  7. jQuery图片延迟加载插件jQuery.lazyload
  8. python中的元组字符串整数浮点数都是不可变的数据类型,Python不可变数据类型总结...
  9. 易宝支付银行接口,各参数
  10. 3ds max制作马克杯
  11. 如果以后找不到工作了,应该干点啥?
  12. 图标修改器html,Iconoid(桌面图标修改器)
  13. 【CAD.Net】第四课:添加实体类和符号表到图纸
  14. Python调用OpenCV实现图像平滑处理
  15. 删除链表重复节点 python_Word里面如何删除空白页?删除Word空白页的六种方法
  16. 科技百咖 | 华途少帅谢永胜眼中的数据安全治理
  17. 公众号如何获得关注粉丝openid?
  18. webdriver自动化测试工具的使用,将chromedriver配置到path环境变量中,并测试是否成功
  19. python 拉普拉斯锐化_Python+OpenCV拉普拉斯图像锐化
  20. 数独求解算法(回溯法和唯一解法)java实现

热门文章

  1. mysql 事务 myisam,InnoDB和MyISAM的差别(mysql事务处理)
  2. php+剥去标签,php剥去字符串中的html与xml及php标签的函数strip_tags()
  3. 从零开始学计算机组装与维修技术,从新手到高手:电脑组装、维护与故障排除...
  4. vs2013 matlab 教程,Matlab 2016a和VS2013混合Dll编程步骤总结
  5. Json字符串转对象,使用ObjectMapper方式报错:no String-argument constructor/factory method
  6. python sort 多级排序_为什么在python中使用排序功能进行多级排序...
  7. 已经发车的票还能取出来吗_高铁票在车已经开了,但我没上车也没有取票的情况下,还能取出票吗?...
  8. 在什么的控制下 计算机系统能及时处理,操作系统练习题(1)
  9. 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)
  10. 来来来,送开发板了。