`

cxf 传递对象

 
阅读更多

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.   
  9. @XmlRootElement (name= "UserInfo" )  
  10. @XmlAccessorType (XmlAccessType.FIELD)  
  11. @XmlType (propOrder={ "userName" , "userAge" })  
  12. public   class  UserInfo {  
  13.     private  String userName;  
  14.     private  Integer userAge;  
  15.       
  16.     public  UserInfo(String name,Integer age){  
  17.         this .userAge = age;  
  18.         this .userName = name;  
  19.     }  
  20.       
  21.     public  UserInfo(){        
  22.     }  
  23.       
  24.     // 添加geter/seter方法..   
  25.       
  26. }  

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

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

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

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

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

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

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

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

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics