CXF框架简单的JavaBean对象传递进行讲解。

来源:互联网 发布:网络上门服务电话 编辑:程序博客网 时间:2024/05/21 14:07
第一步:创建传输的JavaBean对象(UserInfo)
[java] view plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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,验证服务是否成功发布
第四步:运行客户端,验证。

原创粉丝点击