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

WebService CXF学习(进阶篇1):自定义对象传递(简单JavaBean

发布时间:2020-12-16 23:31:20 所属栏目:安全 来源:网络整理
导读:这一节我们就CXF框架简单的JavaBean对象传递进行讲解。 ? 第一步:创建传输的JavaBean对象(UserInfo) [java] ? view plain copy package ?com.ws.model;?? ?? import ?javax.xml.bind.annotation.XmlAccessType;?? import ?javax.xml.bind.annotation.XmlAcc
这一节我们就CXF框架简单的JavaBean对象传递进行讲解。
? 第一步:创建传输的JavaBean对象(UserInfo)
[java]? view plain copy
  1. package?com.ws.model;??
  2. ??
  3. import?javax.xml.bind.annotation.XmlAccessType;??
  4. import?javax.xml.bind.annotation.XmlAccessorType;??
  5. import?javax.xml.bind.annotation.XmlRootElement;??
  6. import?javax.xml.bind.annotation.XmlType;??
  7. ??
  8. @XmlRootElement(name="UserInfo")??
  9. @XmlAccessorType(XmlAccessType.FIELD)??
  10. @XmlType(propOrder={"userName","userAge"})??
  11. public?class?UserInfo?{??
  12. ????private?String?userName;??
  13. ????private?Integer?userAge;??
  14. ??????
  15. public?UserInfo(String?name,Integer?age){??
  16. ????????this.userAge?=?age;??
  17. ????????this.userName?=?name;??
  18. ????}??
  19. ??????
  20. public?UserInfo(){????????
  21. ????}??
  22. ????//?添加geter/seter方法..??
  23. }??

注解:@XmlRootElement-指定XML根元素名称(可选)?
????????? ? @XmlAccessorType-控制属性或方法序列化?,?四种方案:?
????????????????????? ?FIELD-对每个非静态,非瞬变属性JAXB工具自动绑定成XML,除非注明XmlTransient?
???????????????????????NONE-不做任何处理?
????????????????????? ?PROPERTY-对具有set/get方法的属性进行绑定,除非注明XmlTransient?
?????????????????????? PUBLIC_MEMBER -对有set/get方法的属性或具有共公访问权限的属性进行绑定,除非注?明XmlTransient?
??????????? @XmlType-映射一个类或一个枚举类型成一个XML Schema类型

第二步:创建webservices服务端接口和实现类?
???
?1、创建服务端接口类

copy
    package?com.ws.services;??
  1. import?javax.jws.WebService;??
  2. import?com.ws.model.UserInfo;??
  3. @WebService??
  4. interface?IUserServices?{??
  5. public?UserInfo?getUserInfo(String?userName,?Integer?userAge);??
  6. }??

?? 2、创建服务端接口实现类

copy
    package?com.ws.services.impl;??
  1. import?com.ws.services.IUserServices;??
  2. @WebService??
  3. class?UserServicesImpl?implements?IUserServices?{??
  4. return?new?UserInfo(userName,userAge);??
  5. 3、创建服务端,并发布服务

    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",?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、将服务端的JavaBean和Services接口类,copy到客户端工程中,且目录要一致
    ????2、在客户端工程中,新建一个测试类测试

    copy
      package?com.ws.client;??
    1. import?org.apache.cxf.jaxws.JaxWsProxyFactoryBean;??
    2. import?com.ws.server.IUserServices;??
    3. class?UserTest?{??
    4. //创建WebService客户端代理工厂?????
    5. ????????JaxWsProxyFactoryBean?factory?=?new?JaxWsProxyFactoryBean();?????
    6. //注册WebService接口?????
    7. ????????factory.setServiceClass(IUserServices.class);?????
    8. //设置WebService地址?????
    9. ????????factory.setAddress("http://localhost:8090/userInfoServices");??????????
    10. ????????IUserServices?userServices?=?(IUserServices)factory.create();?????
    11. ????????System.out.println("invoke?userinfo?webservice...");??
    12. //?测试返回JavaBean对象的??
    13. ????????UserInfo?user?=?userServices.getUserInfo("vicky",?23);??
    14. ????????System.out.println("UserName:?"+user.getUserName());??
    15. ????????System.out.println("UserAge?:?"+user.getUserAge());??
    16. ??????????
    17. 0);?????
    18. ????}???
    19. 第四步:运行webServices服务,在IE中输入http://localhost:8090/userInfoServices?wsdl,验证服务是否成功发布 第四步:运行客户端,验证。

      (编辑:李大同)

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

    推荐文章
      热点阅读