前面讲的是处理简单类型,今天这里来讲下CXF处理JavaBean以及复合类型,比如集合;
这里实例是客户端传一个JavaBean,服务器端返回集合类型;
在原来的项目实例基础上,我们先创建一个实体类User:
packagecom.wishwzp.entity;/*** 用户实体类
*@authorAdministrator
**/
public classUser {private Integer id; //编号
private String userName; //用户名
private String password; //密码
publicInteger getId() {returnid;
}public voidsetId(Integer id) {this.id =id;
}publicString getUserName() {returnuserName;
}public voidsetUserName(String userName) {this.userName =userName;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}
}
再创建一个Role实体类:
packagecom.wishwzp.entity;/*** 角色实体
*@authorAdministrator
**/
public classRole {private Integer id; //编号
private String roleName; //角色名称
publicRole() {super();//TODO Auto-generated constructor stub
}publicRole(Integer id, String roleName) {super();this.id =id;this.roleName =roleName;
}publicInteger getId() {returnid;
}public voidsetId(Integer id) {this.id =id;
}publicString getRoleName() {returnroleName;
}public voidsetRoleName(String roleName) {this.roleName =roleName;
}
}
然后HelloWorld再加一个接口方法getRoleByUser,通过用户查找角色:
packagecom.wishwzp.webservice;importjava.util.List;importjavax.jws.WebService;importcom.wishwzp.entity.Role;importcom.wishwzp.entity.User;
@WebServicepublic interfaceHelloWorld {publicString say(String str);public ListgetRoleByUser(User user);
}
然后HelloWorld接口实现类 HelloWorldImpl写下新增的方法的具体实现,我们这里写死,模拟下即可:
packagecom.wishwzp.webservice.impl;importjava.util.ArrayList;importjava.util.List;importjavax.jws.WebService;importcom.wishwzp.entity.Role;importcom.wishwzp.entity.User;importcom.wishwzp.webservice.HelloWorld;
@WebServicepublic class HelloWorldImpl implementsHelloWorld{publicString say(String str) {return "hello " +str;
}public ListgetRoleByUser(User user) {//TODO Auto-generated method stub
List roleList=new ArrayList();//模拟 直接写死
if(user!=null){if(user.getUserName().equals("wishwzp") && user.getPassword().equals("123456")){
roleList.add(new Role(1,"技术总监"));
roleList.add(new Role(2,"架构师"));
}else if(user.getUserName().equals("jack") && user.getPassword().equals("123456")){
roleList.add(new Role(3,"程序员"));
}returnroleList;
}else{return null;
}
}
}
服务端其他地方不用动;
下面我们来处理下客户端,和前面讲的一样。我们用wsdl2java工具重新生成代码,这里就不再讲;
如:
我的地址是:D:\eclipse_workspace\WS_Client\src\main\java 你们的可能和我不一样:
然后我们进入dos,进入上面的本地硬盘地址,然后执行命令:wsdl2java http://192.168.0.110/helloWorld?wsdl
这里我看到,实体类,以及接口实现,代码都生成了。
我们改下Client类:
packagecom.wishwzp.webservice;importjava.util.List;public classClient {public static voidmain(String[] args) {
HelloWorldService service=newHelloWorldService();
HelloWorld helloWorld=service.getHelloWorldPort();//System.out.println(helloWorld.say("wishwzp测试"));
User user=newUser();
user.setUserName("jack");
user.setPassword("123456");
List roleList=helloWorld.getRoleByUser(user);for(Role role:roleList){
System.out.println(role.getId()+","+role.getRoleName());
}
}
}
运行截图: