`

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

分享到:
评论

相关推荐

    WebService CXF 对象传递 附

    **WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...

    CXF服务端对象文件支持断点传送

    SOAP允许开发者将复杂的对象作为参数传递给Web服务,这样服务端可以接收和处理这些参数,实现业务逻辑。这通常涉及到序列化和反序列化的过程,即将Java对象转换为XML格式,以便在网络中传输,然后在接收端再将XML...

    webservice cxf 服务端客户端传递参数的例子demo

    下面我们将深入探讨"webservice CXF 服务端客户端传递参数的例子demo"。 1. **CXF框架介绍** CXF是一个Java框架,它允许开发者通过简单的API来创建和使用Web服务。CXF支持多种Web服务标准,如WS-I Basic Profile、...

    cxf和对Interceptor的支持和传递复杂对象的小例子

    这里的Interceptor就和Filter、Struts的Interceptor很类似,提供它的主要作用就是为了很好的降低代码的耦合性,提供...参照网址:http://www.cnblogs.com/hoojo/archive/2011/03/30/1999587.html,cxf入门很不错的哦!

    WebService传递对象与集合问题.rar

    本资源"WebService传递对象与集合问题.rar"显然关注的是在Web Service中如何有效地传递复杂数据类型,如对象和集合。 在传统的Web Service中,数据通常通过XML格式进行传输,这是SOAP消息的基础。然而,直接传递...

    cxf客户端(对象,上传与下载文件支持断点传输)

    本示例着重于CXF客户端如何处理对象参数传递以及支持文件的上传和下载,特别是实现了断点续传功能,这在大文件传输时尤为关键。 【对象传参】: CXF允许通过JAXB(Java Architecture for XML Binding)将Java对象...

    cxf开发指南

    2. CXF 提供了多种方式来传递复杂类型对象,包括: * 通过 CXF 提供的 DataBinding 机制 * 通过 CXF 提供的 Converter 机制 五、CXF 整合 Spring 1. CXF 提供了多种方式来整合 Spring,包括: * 通过 CXF 提供...

    Cxf应用整理学习资料

    除了简单的数据类型,CXF还支持复杂的对象传递,如List、Map等集合类型。这通常涉及到序列化和反序列化的过程。 在本节中,我们将介绍如何在CXF中传递复杂对象。首先,我们需要定义一个实体类`Demo`,用于存储各种...

    cxf框架的webservice,传递json,xml

    通过使用JAXB(Java Architecture for XML Binding),我们可以将Java对象直接转换为XML文档,反之亦然。在服务端,我们可以使用`@WebMethod`注解标记方法作为服务操作,而`@XmlElement`和`@XmlRootElement`等注解...

    WebService_CXF实现及ANT

    在这个主题中,我们将深入探讨CXF的Interceptor拦截器、处理复杂类型对象的传递以及如何结合Spring进行集成,最后我们将学习如何使用ANT工具快速构建和部署CXF工程。 1. CXF Interceptor拦截器: 拦截器是CXF框架...

    apache-cxf-2.4.6.zip

    8. **多种数据绑定技术**:CXF支持JAXB、XMLBeans、Aegis等多种数据绑定技术,使XML到Java对象的转换更加便捷。 9. **插件支持**:CXF提供了Maven插件,可以方便地在Maven项目中使用,简化构建流程。 在"apache-...

    spring,cxf,restful发布webservice传递List,Map,List<Map>

    在IT行业中,Web服务是一...总的来说,结合Spring、CXF和RESTful,我们可以轻松地创建和消费传递复杂对象的Web服务,这在分布式系统和微服务架构中尤其有用。理解并熟练掌握这些技术,对于提升你的IT职业生涯至关重要。

    cxf基本jar包

    1. **WS-*协议支持**:CXF提供了对Web服务标准如WS-Security(安全性)、WS-ReliableMessaging(可靠消息传递)和WS-Addressing(地址)的支持,使得开发人员能够创建符合这些规范的服务。 2. **JAX-WS和JAX-RS实现...

    CXF WebService实例

    接下来,我们要讨论的是如何通过CXF传递复杂数据类型,如`List`和`Map`。CXF支持数据绑定,可以自动将Java对象转换为XML消息,反之亦然。在服务接口中,你可以定义接受或返回`List`或`Map`的方法,然后在实现中处理...

    CXF各种资料.rar

    - 数据绑定:支持JAXB、XMLBeans、Aegis等多种数据绑定方式,用于对象和XML之间的转换。 - 消息传递:处理消息格式,如SOAP和RESTful。 - 插件架构:允许扩展和自定义CXF的行为。 2. **CXF与Spring的集成:** ...

    cxf server demo简单程序例子

    5. **Spring框架集成**:CXF可以与Spring框架无缝集成,利用Spring的依赖注入特性来管理服务对象。 6. **服务配置**:CXF服务的配置通常通过XML文件完成,例如cxf.xml,其中包含了服务的地址、实现类、绑定信息等。...

    cxf 2.1.3 client

    在描述中提到的场景,CXF 2.1.3客户端被用来调用XFire 1.2.6服务端的服务,涉及对象的传递和返回。 XFire,后来并入了CXF项目,是一个早期的Java Web服务框架,它同样支持SOAP通信。XFire 1.2.6作为服务端,提供了...

    apache-cxf-2.1.4及教程

    然而,CXF支持XML Schema定义的复杂数据类型,这意味着你可以直接传递和接收Java对象,这极大地简化了服务接口的设计和使用。 最后,CXF与Spring的整合是另一个重要的知识点。Spring是一个广泛使用的Java企业级应用...

    cxf webservice demo

    总的来说,这个"CXF Webservice Demo"是一个完整的示例,涵盖了从基础的字符串传递到复杂的对象交换,以及与Spring的集成。通过学习和理解这个示例,开发者能够更好地掌握如何在实际项目中使用CXF来创建高效、灵活且...

    cxf完整开发工具包

    5. **WS-* Specifications**:CXF支持一系列Web服务增强规范,如WS-Security(安全)、WS-ReliableMessaging(可靠消息传递)和WS-Addressing(地址)等,这些规范提供了更高级的功能和互操作性。 6. **CXF Tools**...

Global site tag (gtag.js) - Google Analytics