微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

这一节我们就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,验证服务是否成功发布 第四步:运行客户端,验证。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐