首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

cxf 传接对象

2012-07-02 
cxf 传递对象CXF框架简单的JavaBean对象传递进行讲解。?第一步:创建传输的JavaBean对象(UserInfo)[java] vi

cxf 传递对象

CXF框架简单的JavaBean对象传递进行讲解。
?第一步:创建传输的JavaBean对象(UserInfo)

[java] view plaincopy
  1. package?com.ws.model;????
  2. import?javax.xml.bind.annotation.XmlAccessType;??import?javax.xml.bind.annotation.XmlAccessorType;??
  3. import?javax.xml.bind.annotation.XmlRootElement;??import?javax.xml.bind.annotation.XmlType;??
  4. ????
  5. @XmlRootElement(name="UserInfo")??@XmlAccessorType(XmlAccessType.FIELD)??
  6. @XmlType(propOrder={"userName","userAge"})??public?class?UserInfo?{??
  7. ????private?String?userName;??????private?Integer?userAge;??
  8. ??????????public?UserInfo(String?name,Integer?age){??
  9. ????????this.userAge?=?age;??????????this.userName?=?name;??
  10. ????}????????
  11. ????public?UserInfo(){????????????}??
  12. ??????????//?添加geter/seter方法..??
  13. ??????}??

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

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

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

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

[java] view plaincopy
  1. package?com.ws.services.impl;????
  2. import?javax.jws.WebService;??import?com.ws.model.UserInfo;??
  3. import?com.ws.services.IUserServices;????
  4. @WebService??public?class?UserServicesImpl?implements?IUserServices?{??
  5. ????public?UserInfo?getUserInfo(String?userName,?Integer?userAge)?{??????????return?new?UserInfo(userName,userAge);??
  6. ????}??}??

3、创建服务端,并发布服务

[java] view plaincopy
  1. package?com.test;????
  2. import?javax.xml.ws.Endpoint;??import?org.apache.cxf.jaxws.JaxWsServerFactoryBean;??
  3. import?com.ws.services.impl.UserServicesImpl;????
  4. public?class?ServerTest?{??????public?ServerTest(){??
  5. ????????//?发布User服务接口??????????Endpoint.publish("http://localhost:8090/userInfoServices",?new?UserServicesImpl());??
  6. ????}??????public?static?void?main(String[]?args)?{??
  7. ????????//?启动服务??????????new?ServerTest();??
  8. ????????System.out.println("Server?ready...");?????????????try?{??
  9. ????????????Thread.sleep(1000*300);//休眠五分分钟,便于测试?????????????}?catch?(InterruptedException?e)?{??
  10. ????????????e.printStackTrace();??????????}?????
  11. ????????System.out.println("Server?exit...");?????????????System.exit(0);??
  12. ????}??}??

第三步:创建webservices客户端,并进行测试(这里只例举在客户端工程中的测试方法)?
??? 1、将服务端的JavaBean和Services接口类,copy到客户端工程中,且目录要一致
????2、在客户端工程中,新建一个测试类测试

[java] view plaincopy
  1. package?com.ws.client;????
  2. import?org.apache.cxf.jaxws.JaxWsProxyFactoryBean;??import?com.ws.model.UserInfo;??
  3. import?com.ws.server.IUserServices;????
  4. public?class?UserTest?{??????public?static?void?main(String[]?args)?{??
  5. ????????//创建WebService客户端代理工厂?????????????JaxWsProxyFactoryBean?factory?=?new?JaxWsProxyFactoryBean();?????
  6. ????????//注册WebService接口?????????????factory.setServiceClass(IUserServices.class);?????
  7. ????????//设置WebService地址?????????????factory.setAddress("http://localhost:8090/userInfoServices");??????????
  8. ????????IUserServices?userServices?=?(IUserServices)factory.create();?????????????System.out.println("invoke?userinfo?webservice...");??
  9. ????????//?测试返回JavaBean对象的??????????UserInfo?user?=?userServices.getUserInfo("vicky",?23);??
  10. ????????System.out.println("UserName:?"+user.getUserName());??????????System.out.println("UserAge?:?"+user.getUserAge());??
  11. ??????????????????System.exit(0);?????
  12. ????}???}??

第四步:运行webServices服务,在IE中输入http://localhost:8090/userInfoServices?wsdl,验证服务是否成功发布
第四步:运行客户端,验证。

热点排行