加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService CXF学习(进阶篇2):复杂对象传递(List,Map)

发布时间:2020-12-16 23:31:18 所属栏目:安全 来源:网络整理
导读:前面讲到了JavaBean对象的传递,这一节我们就CXF框架复杂对象(List,Map)的传递进行讲解。? 第一步:创建存储复杂对象的类(因为WebServices的复杂对象的传递,一定要借助第三方对象(即自定义对象)来实现) [java] ? view plain copy package ?com.ws.model;??

前面讲到了JavaBean对象的传递,这一节我们就CXF框架复杂对象(List,Map)的传递进行讲解。?
第一步:创建存储复杂对象的类(因为WebServices的复杂对象的传递,一定要借助第三方对象(即自定义对象)来实现)

[java]? view plain copy
  1. package?com.ws.model;??
  2. ??
  3. import?java.util.ArrayList;??
  4. import?java.util.HashMap;??
  5. ??
  6. public?class?Users?{??
  7. ????private?ArrayList<UserInfo>?userList;??//?不要用List类型??
  8. ????private?HashMap<Integer,?UserInfo>?userMap;?//?不要用Map类型??
  9. private?UserInfo[]?userArray;??
  10. ????//?geter/seter?方法??
  11. }??

第二步:创建WebServices的服务端接口和实现类

copy
    package?com.ws.services;??
  1. import?javax.jws.WebService;??
  2. import?com.ws.model.UserInfo;??
  3. import?com.ws.model.Users;??
  4. @WebService??
  5. interface?IUserServices?{??
  6. public?Users?getAllUsers();??
  7. ??????
  8. public?Users?getUsersMap();??
  9. public?Users?getUsersArray();??
  10. }??
copy
    package?com.ws.services.impl;??
  1. import?com.ws.services.IUserServices;??
  2. @WebService??
  3. class?UserServicesImpl?implements?IUserServices?{??
  4. public?Users?getAllUsers()?{??
  5. ????????ArrayList<UserInfo>?list?=?new?ArrayList<UserInfo>();??
  6. ????????list.add(new?UserInfo("vicky",23));??
  7. ????????list.add(new?UserInfo("ivy",0); background-color:inherit">26));??
  8. new?UserInfo("simon",0); background-color:inherit">26));??
  9. new?UserInfo("carol",0); background-color:inherit">29));??
  10. ????????Users?users?=?new?Users();??
  11. ????????users.setUserList(list);??
  12. ????????return?users;??
  13. ????}??
  14. public?Users?getUsersMap()?{??
  15. ????????HashMap<Integer,?UserInfo>?map?=?new?HashMap<Integer,?UserInfo>();??
  16. ????????map.put(23,?23));??
  17. ????????map.put(22,153); background-color:inherit; font-weight:bold">new?UserInfo("caty",0); background-color:inherit">22));??
  18. 24,153); background-color:inherit; font-weight:bold">new?UserInfo("leah",0); background-color:inherit">24));??
  19. 25,153); background-color:inherit; font-weight:bold">new?UserInfo("kelly",0); background-color:inherit">25));??
  20. 27,0); background-color:inherit">27));??
  21. 26,0); background-color:inherit">29,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ??????????
  22. ????????Users?users?=?new?Users();??
  23. ????????users.setUserMap(map);??
  24. ????????return?users;??
  25. ????}??
  26. public?Users?getUsersArray()?{??
  27. ????????UserInfo[]?userInfo?=?new?UserInfo[5];??
  28. for(int?i=0;i<5;i++){??
  29. ????????????UserInfo?info?=?new?UserInfo();??
  30. ????????????info.setUserAge(23+i);??
  31. ????????????info.setUserName("Array"+(i+1));??
  32. ????????????userInfo[i]?=?info;??
  33. ????????}??
  34. ????????users.setUserArray(userInfo);??
  35. }??

第三步:创建WebServices的服务端

copy
    package?com.test;??
  1. import?javax.xml.ws.Endpoint;??
  2. import?org.apache.cxf.jaxws.JaxWsServerFactoryBean;??
  3. import?com.ws.services.impl.UserServicesImpl;??
  4. class?ServerTest?{??
  5. public?ServerTest(){??
  6. ????????//?发布User服务接口??
  7. ????????Endpoint.publish("http://localhost:8090/userInfoServices",153); background-color:inherit; font-weight:bold">new?UserServicesImpl());??
  8. static?void?main(String[]?args)?{??
  9. //?启动服务??
  10. new?ServerTest();??
  11. ????????System.out.println("Server?ready...");?????
  12. try?{??
  13. ????????????Thread.sleep(1000*300);//休眠五分分钟,便于测试???
  14. ????????}?catch?(InterruptedException?e)?{??
  15. ????????????e.printStackTrace();??
  16. ????????}?????
  17. ????????System.out.println("Server?exit...");?????
  18. ????????System.exit(0);??
  19. 第四步:创建WebServices的客户端,并测试
    ??? 1、将服务端创建的复杂对象的类和接口copy到客户工程中,且路径要与服务端一致;
    ??? 2、新建测试类进行测试

    copy
      package?com.ws.client;??
    1. import?java.util.List;??
    2. import?org.apache.cxf.jaxws.JaxWsProxyFactoryBean;??
    3. import?com.ws.model.UserInfo;??
    4. import?com.ws.model.Users;??
    5. import?com.ws.server.IUserServices;??
    6. class?UserTest?{??
    7. //创建WebService客户端代理工厂?????
    8. ????????JaxWsProxyFactoryBean?factory?=?new?JaxWsProxyFactoryBean();?????
    9. //注册WebService接口?????
    10. ????????factory.setServiceClass(IUserServices.class);?????
    11. //设置WebService地址?????
    12. ????????factory.setAddress("http://localhost:8090/userInfoServices");??????????
    13. ????????IUserServices?userServices?=?(IUserServices)factory.create();?????
    14. ????????System.out.println("invoke?userinfo?webservice...");??
    15. //?测试Map??
    16. //??????testMap(userServices);??
    17. //?测试List??
    18. //??????testList(userServices);??
    19. //?测试Array??
    20. //??????testArray(userServices);??
    21. ????????System.exit(0);?????
    22. ????}???
    23. void?testArray(IUserServices?userServices){??
    24. ????????Users?users?=?userServices.getUsersArray();??
    25. if(users!=null){??
    26. ????????????UserInfo[]?array?=?users.getUserArray();??
    27. ????????????for(UserInfo?info:array){??
    28. ????????????????System.out.println("UserName:?"+info.getUserName());??
    29. ????????????????System.out.println("UserAge?:?"+info.getUserAge());??
    30. ????????????}??
    31. ??????
    32. void?testList(IUserServices?userServices){??
    33. ????????Users?users?=?userServices.getAllUsers();??
    34. null){??
    35. ????????????List<UserInfo>?list?=?users.getUserList();??
    36. ????????????for(UserInfo?info:list){??
    37. ????????????????System.out.println("UserName:?"+info.getUserName());??
    38. ????????????????System.out.println("UserAge?:?"+info.getUserAge());??
    39. ????????????}??
    40. ????????}??
    41. void?testMap(IUserServices?userServices){??
    42. ????????Users?users?=?userServices.getUsersMap();??
    43. ????????????UserInfo?info?=?users.getUserMap().get(23);??
    44. ????????????System.out.println("UserName:?"+info.getUserName());??
    45. ????????????System.out.println("UserAge?:?"+info.getUserAge());??
    46. 第五步:运行服务端,验证webservices服务是否发布成功
      第六步:运行客户端,验证是否成功调用webservices服务

      注:在做webServices复杂对象传递时,返回值的类型不要用接口类型。例如(List 应该换成ArrayList,Map应该换成HashMap)

      (编辑:李大同)

      【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读