博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CXF WebService中传递复杂对象(List、Map、Array)
阅读量:5864 次
发布时间:2019-06-19

本文共 11254 字,大约阅读时间需要 37 分钟。

转自: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 Entity  7 7.    * @author Administrator  8 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 Administrator  21 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.    // string  30 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 JavaBean  41 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.    // 传递集合的包装对象 List  47 47.    public Users getUsers(int i) {  48 48.    List
users = new ArrayList
(); 49 49. for (int j = 0; j <= i; j++) { 50 50. User user = new User(); 51 51. user.setId(new Date().getSeconds()); 52 52. user.setName("Sun#" + j); 53 53. user.setAddress("China"); 54 54. user.setEmail("Sun" + j + "@163.com"); 55 55. 56 56. users.add(user); 57 57. 58 58. } 59 59. Users u = new Users(); 60 60. u.setUsers(users); 61 61. return u; 62 62. } 63 63. 64 64. public void setUsers(Users users) { 65 65. System.out.println("############ Server setUsers ###########"); 66 66. for (User u : users.getUsers()) { 67 67. System.out.println("setUsers:" + u); 68 68. } 69 69. } 70 70. 71 71. // 传递集合的包装对象 Array 72 72. public Users getUserArray(int i) { 73 73. User[] users = new User[i]; 74 74. for (int j = 0; j < i; j++) { 75 75. User user = new User(); 76 76. user.setId(new Date().getSeconds()); 77 77. user.setName("Jack#" + j); 78 78. user.setAddress("China"); 79 79. user.setEmail("Jack" + j + "@163.com"); 80 80. 81 81. users[j] = user; 82 82. } 83 83. Users u = new Users(); 84 84. u.setUserArr(users); 85 85. return u; 86 86. } 87 87. 88 88. public void setUserArray(Users users) { 89 89. System.out.println("$$$$$$$$$$$$ Server setUserArray $$$$$$$$"); 90 90. for (User u : users.getUserArr()) { 91 91. System.out.println("setUserArray:" + u); 92 92. } 93 93. } 94 94. 95 95. // 传递集合的包装对象 Map 96 96. public void setUserMap(Users maps) { 97 97. System.out.println("------------ Server setUserMap ----------"); 98 98. System.out.println("setUserMap:" + maps.getMaps()); 99 99. } 100 100. 101 101. public Users getUserMap() { 102 102. HashMap
users = new HashMap
(); 103 103. User user = new User(); 104 104. user.setId(new Date().getSeconds()); 105 105. user.setName("Jack#"); 106 106. user.setAddress("China#"); 107 107. user.setEmail("Jack@163.com"); 108 108. 109 109. users.put("A", user); 110 110. user = new User(); 111 111. user.setId(new Date().getSeconds()); 112 112. user.setName("Tom"); 113 113. user.setAddress("China$$"); 114 114. user.setEmail("Tom@163.com"); 115 115. 116 116. users.put("B", user); 117 117. Users u = new Users(); 118 118. u.setMaps(users); 119 119. 120 120. return u; 121 121. } 122 122. }

3、 发布WebService的代码

1 1.    package com.wy.object;  2 2.     3 3.    import javax.xml.ws.Endpoint;  4 4.     5 5.    import com.wy.object.server.impl.UserService;  6 6.    /**  7 7.    * 发布UserService服务  8 8.    * @author Administrator  9 9.    * 10 10.    */ 11 11.    public class DeployUserService { 12 12.    public static void main(String[] args) throws InterruptedException { 13 13.    String address = "http://localhost:8080/WebServiceCXF/services/IUserService"; 14 14.    UserService service = new UserService(); 15 15.    Endpoint.publish(address, service); 16 16.    System.out.println("Server ready..."); 17 17.    Thread.sleep(1000 * 60 * 20); 18 18.    System.out.println("Server exit..."); 19 19.    System.exit(0); 20 20.    } 21 21.    }

4、 客户端调用代码

1 1.    package com.wy.object.client;  2 2.     3 3.    import java.util.ArrayList;  4 4.    import java.util.List;  5 5.    import java.util.Random;  6 6.     7 7.    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;  8 8.     9 9.    import com.wy.object.Users; 10 10.    import com.wy.object.entry.User; 11 11.    import com.wy.object.server.IUserService; 12 12.    13 13.    /** 14 14.    * 调用UserService客户端 15 15.    * 16 16.    * @author Administrator 17 17.    * 18 18.    */ 19 19.    public class UserServiceClient { 20 20.    public static void main(String[] args) { 21 21.    22 22.    // 调用WebService 23 23.    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 24 24.    factory.setServiceClass(IUserService.class); 25 25.    factory.setAddress("http://localhost:8080/WebServiceCXF/services/IUserService"); 26 26.    IUserService service = (IUserService) factory.create(); 27 27.    28 28.    //string 29 29.    System.out.println("@@@@@@@@@@@@@Client getUserByName@@@@@@@@@@@@@@"); 30 30.    User user = service.getUserByName("Jack"); 31 31.    System.out.println("Client: "+ user); 32 32.    user.setAddress("China-BeiJing"); 33 33.    34 34.    //object JavaBean 35 35.    service.setUser(user); 36 36.    37 37.    //传递集合的包装对象 List 38 38.    System.out.println("#############Client getUsers###################"); 39 39.    Users users = service.getUsers(4); 40 40.    System.out.println("Client: "+ users); 41 41.    List
tempUsers = new ArrayList
(); 42 42. for (User u : users.getUsers()) { 43 43. System.out.println("Client: "+ u); 44 44. u.setName("Jack" + new Random().nextInt(100)); 45 45. u.setAddress("Chian-BeiJing#" + new Random().nextInt(100)); 46 46. tempUsers.add(u); 47 47. } 48 48. users.getUsers().clear(); 49 49. users.getUsers().addAll(tempUsers); 50 50. 51 51. service.setUsers(users); 52 52. 53 53. //传递集合的包装对象 Array 54 54. System.out.println("$$$$$$$$$$$$Client getUserArray$$$$$$$$$$$$$$$"); 55 55. users = service.getUserArray(4); 56 56. User[] userArr = new User[4]; 57 57. int i = 0; 58 58. for (User u : users.getUserArr()) { 59 59. System.out.println("Client: "+ u); 60 60. u.setName("Jack" + new Random().nextInt(100)); 61 61. u.setAddress("Chian-ShenZhen#" + new Random().nextInt(100)); 62 62. userArr[i] = u; 63 63. i++; 64 64. } 65 65. users.setUserArr(userArr); 66 66. 67 67. service.setUserArray(users); 68 68. 69 69. //传递集合的包装对象 Map 70 70. System.out.println("------------Client getUserMap----------------"); 71 71. users = service.getUserMap(); 72 72. System.out.println("Client: "+ users.getMaps()); 73 73. users.getMaps().put("ABA", userArr[0]); 74 74. service.setUserMap(users); 75 75. 76 76. } 77 77. }

 

转载于:https://www.cnblogs.com/sharpest/p/8376354.html

你可能感兴趣的文章
maven学习随笔
查看>>
JDK环境变量与Java简单语法介绍
查看>>
js阻止表单提交的两种方法
查看>>
mysql语句写法(左连与子查询结合)实战
查看>>
redis主从及集群搭建
查看>>
基于Web Services建立Asp与Asp.Net之间Session数据桥的应用研究
查看>>
IPtables之四:NAT原理和配置
查看>>
如何划分子网并快速计算子网掩码
查看>>
双ISP双链路接入NAT配置问题探讨
查看>>
[cocos2d-x]手势条纹
查看>>
《Effective C++》之条款32:确定你的public继承塑模出is-a关系
查看>>
使用Cisco Packet Tracer之图解NTP的使用
查看>>
ExtJS4.2学习(11)可拖放的表格
查看>>
【web开发】☆★之利用POI操作Excel表格系列教程【7】Excel文本取值
查看>>
[C# 网络编程系列]专题九:实现类似QQ的即时通信程序
查看>>
jquery数组处理
查看>>
ORACLE RAC-Failed to retrieve procctx from ht
查看>>
SystemImager自动化安装Linux系统(上)
查看>>
第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档(2)
查看>>
现任明教教主CCNP Security SecureV1.0 第一天.1
查看>>