转自:https://wenku.baidu.com/view/047ce58ed0d233d4b14e69eb.html
现在开始介绍传递复杂类型的对象。如JavaBean、Array、List、Map等。
如有不正确之处,请各位给予指出!
1、 首先看看服务器端的代码所需要的JavaBean对象
1 1.package com.wy.object.entry;2 2. 3 3.import java.io.Serializable;4 4. 5 5./**6 6.* User Entity7 7.* @author Administrator8 8.*9 9.*/ 10 10.public class User implements Serializable { 11 11.12 12.private static final long serialVersionUID = 1L; 13 13.14 14.private int id; 15 15.private String name; 16 16.private String email; 17 17.private String address; 18 18.19 19.public int getId() { 20 20.return id; 21 21.} 22 22.23 23.public void setId(int id) { 24 24.this.id = id; 25 25.} 26 26.27 27.public String getName() { 28 28.return name; 29 29.} 30 30.31 31.public void setName(String name) { 32 32.this.name = name; 33 33.} 34 34.35 35.public String getEmail() { 36 36.return email; 37 37.} 38 38.39 39.public void setEmail(String email) { 40 40.this.email = email; 41 41.} 42 42.43 43.public String getAddress() { 44 44.return address; 45 45.} 46 46.47 47.public void setAddress(String address) { 48 48.this.address = address; 49 49.} 50 50.51 51.@Override 52 52.public String toString() { 53 53.54 54.return this.id + " - " + this.name + " - " + this.address + " - " 55 55.+ this.email; 56 56.57 57.} 58 58.}下面的是集合传递Users,CXF直接传递集合对象会出现异常,用一个对象包装下就Ok了,不知道是什么原因。
1 1.package com.wy.object;2 2. 3 3.import java.util.HashMap;4 4.import java.util.List;5 5. 6 6.import com.wy.object.entry.User;7 7. 8 8./**9 9.* CXF直接传递集合对象会出现异常,用一个对象包装下就Ok了,不知道是什么原因? 10 10.* 11 11.* @author Administrator 12 12.* 13 13.*/ 14 14.public class Users { 15 15.private List users; 16 16.private User[] userArr; 17 17.private HashMap maps; 18 18.public List getUsers() { 19 19.return users; 20 20.} 21 21.22 22.public void setUsers(List users) { 23 23.this.users = users; 24 24.} 25 25.26 26.public User[] getUserArr() { 27 27.return userArr; 28 28.} 29 29.30 30.public void setUserArr(User[] userArr) { 31 31.this.userArr = userArr; 32 32.} 33 33.34 34.public HashMap getMaps() { 35 35.return maps; 36 36.} 37 37.38 38.public void setMaps(HashMap maps) { 39 39.this.maps = maps; 40 40.} 41 41.42 42.}2、 下面看看复杂对象传递的服务器端代码
1 1.package com.wy.object.server;2 2. 3 3.import javax.jws.WebParam;4 4.import javax.jws.WebService;5 5. 6 6.import com.wy.object.Users;7 7.import com.wy.object.entry.User;8 8./**9 9.* 定制客户端请求WebService所需要的接口 10 10.* @author Administrator 11 11.* 12 12.*/ 13 13.14 14.@WebService 15 15.public interface IUserService { 16 16.public User getUserByName(@WebParam(name = "name") String name); 17 17.public void setUser(User user); 18 18.public Users getUsers(int i); 19 19.public void setUsers(Users users); 20 20.public Users getUserArray(int i); 21 21.public void setUserArray(Users users); 22 22.public void setUserMap(Users maps); 23 23.public Users getUserMap(); 24 24.}
接口实现类:
1 1.package com.wy.object.server.impl;2 2. 3 3.import java.util.ArrayList;4 4.import java.util.Date;5 5.import java.util.HashMap;6 6.import java.util.List;7 7. 8 8.import javax.jws.WebParam;9 9.import javax.jws.WebService;10 10.import javax.jws.soap.SOAPBinding;11 11.import javax.jws.soap.SOAPBinding.Style;12 12. 13 13.import com.wy.object.Users;14 14.import com.wy.object.entry.User;15 15.import com.wy.object.server.IUserService;16 16. 17 17./**18 18.* WebService传递复杂对象,如JavaBean、Array、List、Map等19 19.*20 20.* @author Administrator21 21.*22 22.*/23 23. 24 24.@WebService(endpointInterface = "com.wy.object.server.IUserService", serviceName = "IUserService")25 25.@SOAPBinding(style = Style.RPC)26 26.@SuppressWarnings("deprecation")27 27.public class UserService implements IUserService {28 28. 29 29.// string30 30.public User getUserByName(@WebParam(name = "name")31 31.String name) {32 32.User user = new User();33 33.user.setId(new Date().getSeconds());34 34.user.setName(name);35 35.user.setAddress("China BeiJing");36 36.user.setEmail(name + "@163.com");37 37.return user;38 38.}39 39. 40 40.// object JavaBean41 41.public void setUser(User user) {42 42.System.out.println("@@@@@@@@@@@@ Server setUser @@@@@@@@@@@");43 43.System.out.println("setUser:" + user);44 44.}45 45. 46 46.// 传递集合的包装对象 List47 47.public Users getUsers(int i) {48 48.List users = new ArrayList();49 49.for (int j = 0; j