仍在上篇的代码基础上操作; 上篇的图为什么没显示 谁能说下嘛
当形参,返回值的 类型是string,基本类型的时候,cxf可以轻松处理;
当形参,返回值的 类型是javabean式的复合类,list,数组时也可以处理;
但是如map,飞javabean式的符合类,cxf是处理不了的,以后有这些类的处理介绍;
建立bean包建立cat,User类;
User中
并重写方法 :只name 和address就好;
二:建立service包与impl
public interface UserService {
List<Cat> getCatByUser(User user);
}
public class UserServiceImpl implements UserService {
//用一个hashMap来模拟内存中的数据
static Map<User,List<Cat>> catDb = new HashMap<>();
static {
List<Cat> catList1 = new ArrayList<>();
catList1.add(new Cat("1","小毛1","黄色1"));
catList1.add(new Cat("2","小毛2","黄色2"));
catDb.put(new User("11","小王","男","新乡"),catList1);
List<Cat> catList2 = new ArrayList<>();
catList2.add(new Cat("3","小毛3","黄色3"));
catList2.add(new Cat("4","小毛4","黄色4"));
catDb.put(new User("12","小zhang","男","新乡"),catList2);
}
public List<Cat> getCatByUser(User user) {
// TODO Auto-generated method stub
return catDb.get(user);
}
}
----------------------------------------------
HelloWord接口中加入:public List<Cat> getCatsByUser(User user);
HelloWordImpl
public List<Cat> getCatsByUser(User user) {
UserService us= new UserServiceImpl();
return us.getCatByUser(user);
}
-------------------------------------------服务端完成
---由于服务端改变 ,客户端需要重新生成在原有的基础上-- 扔进入到小黑窗客户端src下-- 运行wsdl2java http://ip地址/test?wsdl
--进入TestClient类
public static void main(String[] args) {
//该类的实例课当成工厂来使用;
HelloWordImpl factory = new HelloWordImpl();
//这个HelloWord 是客户端的 但是和服务端有相同的方法;
// 返回的只是远程的web service的代理
HelloWord hw = factory.getHelloWordImplPort();
// String sayHi = hw.sayHi("孙悟空");
// System.out.println(sayHi);
User user = new User();
user.setId("11");
user.setName("小王");
user.setSex("男");
user.setAddress("河北");
List<Cat> list = hw.getCatsByUser(user);
for (Cat cat : list) {
System.out.println(cat.getCid()+"_"+cat.getCname()+"__"+cat.getColer());
}
}
运行成功 经小王的猫都输出;;;