`
Getwaysun
  • 浏览: 32122 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Apache CXF实战之三 传输Java对象

 
阅读更多
本文链接:http://blog.csdn.net/kongxx/article/details/7527094


Apache CXF实战之一 Hello World Web Service

Apache CXF实战之二 集成Sping与Web容器

前面两篇文章介绍了怎样通过CXF来构建最基本的Web Service,并且其中暴露的接口参数和返回值都是字符串,下面来看看一个稍微复杂一点的例子。

1. 首先是一个普通的pojo对象,用来表示一个实体类

package com.googlecode.garbagecan.cxfstudy.jaxws;  
  
import java.util.Date;  
  
public class Customer {  
    private String id;  
    private String name;  
    private Date birthday;  
    public String getId() {  
        return id;  
    }  
    public void setId(String id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public Date getBirthday() {  
        return birthday;  
    }  
    public void setBirthday(Date birthday) {  
        this.birthday = birthday;  
    }  
    @Override  
    public String toString() {  
        return org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(this);  
    }  
}  


2. 创建Web Service接口类

package com.googlecode.garbagecan.cxfstudy.jaxws;  
  
import javax.jws.WebMethod;  
import javax.jws.WebParam;  
import javax.jws.WebResult;  
import javax.jws.WebService;  
  
@WebService  
public interface CustomerService {  
    @WebMethod  
    @WebResult Customer findCustomer(@WebParam String id);  
}  


3. 创建Web Service接口的实现类

package com.googlecode.garbagecan.cxfstudy.jaxws;  
  
import java.util.Calendar;  
  
public class CustomerServiceImpl implements CustomerService {  
  
    public Customer findCustomer(String id) {  
        Customer customer = new Customer();  
        customer.setId("customer_" + id);  
        customer.setName("customer_name");  
        customer.setBirthday(Calendar.getInstance().getTime());  
        return customer;  
    }  
}  


4. 下面是Server端的代码

package com.googlecode.garbagecan.cxfstudy.jaxws;  
  
import javax.xml.ws.Endpoint;  
  
import org.apache.cxf.interceptor.LoggingInInterceptor;  
import org.apache.cxf.interceptor.LoggingOutInterceptor;  
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;  
  
public class MyServer {  
      
    private static final String address = "http://localhost:9000/ws/jaxws/customerService";  
      
    public static void main(String[] args) throws Exception {  
        // http://localhost:9000/ws/jaxws/customerService?wsdl  
        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();  
        factoryBean.getInInterceptors().add(new LoggingInInterceptor());  
        factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());  
  
        factoryBean.setServiceClass(CustomerServiceImpl.class);  
        factoryBean.setAddress(address);  
        factoryBean.create();  
    }  
}  


5. 下面是Client端的代码

package com.googlecode.garbagecan.cxfstudy.jaxws;  
  
import java.net.SocketTimeoutException;  
  
import javax.xml.ws.WebServiceException;  
  
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;  
  
public class MyClient {  
    public static void main(String[] args) throws Exception {  
        JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();  
        factoryBean.setAddress("http://localhost:9000/ws/jaxws/customerService");  
        factoryBean.setServiceClass(CustomerService.class);  
        Object obj = factoryBean.create();  
  
        CustomerService customerService = (CustomerService) obj;  
        try {  
            Customer customer = customerService.findCustomer("123");  
            System.out.println("Customer: " + customer);  
        } catch(Exception e) {  
            if (e instanceof WebServiceException   
                    && e.getCause() instanceof SocketTimeoutException) {  
                System.err.println("This is timeout exception.");  
            } else {  
                e.printStackTrace();  
            }  
        }  
    }  
}  


6.测试

首先运行MyServer类,然后运行MyClient类来验证Web Service。

分享到:
评论

相关推荐

    实战Web Service —— 使用Apache CXF开发Web服务的教程

    **实战Web Service —— 使用Apache CXF开发Web服务的教程** Apache CXF是一个开源的Java框架,用于构建和部署Web服务。本教程将带你深入理解如何利用CXF来开发高效、灵活的Web服务。我们将从基础概念开始,逐步...

    Apache_cxf_学习笔记

    Apache CXF 是一个开源的Java框架,主要用于构建和开发服务导向架构(Service-Oriented Architecture, SOA)和Web服务。本学习笔记旨在提供对Apache CXF的基本理解、功能特性和实际操作指导。 **1. CXF 简介** 1.1...

    Developing Web Services with Apache CXF and Axis2_3rd Edition

    ### 开发Web服务:使用Apache CXF与Axis2(第三版) #### 一、书籍概述 本书《开发Web服务:使用Apache CXF与Axis2》是针对希望学习如何使用Java创建Web服务的专业人士所编写的实用教程。作者Kent Kai Ok Tong以...

    webservice cxf 开发实战

    【压缩包子文件的文件名称列表】:“cxf实战笔记” 这份压缩包很可能包含了一位开发者在使用CXF开发Web服务过程中的学习笔记,可能包括了以下内容: - **基础教程**:介绍如何搭建CXF环境,创建第一个Web服务。 - *...

    Java实训教程 Java软件开发实战 Java开发框架介绍 webservices-cxf 共30页.pptx

    - **第三方框架**:如Apache CXF、Apache Axis、XFire等专门针对Web Service的开源框架。 #### 三、Apache CXF框架介绍 - **CXF框架背景**: - CXF最初源自XFire项目,随着XFire的发展停滞,其源码被捐赠给了...

    WebService技术手册 CXF&XFire

    CXF,全称Apache CXF,是一个开源的Java框架,用于构建和部署高质量的WebService。CXF集成了原本独立的XFire和Celtix项目,提供了一种全面的解决方案,支持SOAP、RESTful、JAX-RS和JAX-WS等服务风格。CXF的优势在于...

    CXF笔记

    【CXF笔记】这篇笔记主要聚焦于Apache CXF框架,这是一个开源的服务框架,它允许开发者构建和消费Web服务。CXF使得开发人员可以利用多种不同的Web服务标准来创建服务,如SOAP、RESTful API等。CXF支持Java编程模型,...

    cfx web service

    **三、Apache CXF 2.6.2特性** - **支持JAX-WS 2.2**:这个版本支持最新的JAX-WS规范,提供了更强大的Web服务开发能力。 - **增强的REST支持**:CXF 2.6.2增强了对JAX-RS的支持,可以方便地开发RESTful Web服务。 -...

    CXF开发的服务端及客户端

    【CXF开发的服务端及客户端】是一个基于Apache CXF和Spring框架构建的项目,主要功能是实现文件的上传和下载,以及支持视频音频的传输。这个项目为学习者提供了实战经验,帮助理解如何在实际应用中运用CXF作为服务端...

    webservice简单实现例子java工程

    在Java中,通常使用Apache CXF或JAX-WS框架来生成WSDL文件。 3. **SOAP**: SOAP是一种用于在Web上传输结构化信息的协议,它基于HTTP协议,允许Web服务调用者和提供者之间进行数据交换。SOAP消息通常包含三个部分:...

    DevelopingWebServicesWithCXFandAxis2ThirdEdition

    《开发Web服务:使用Apache CXF与Axis 2》(第三版)不仅提供了关于如何使用这两种框架构建Web服务的基础知识,还深入探讨了一些高级话题,如安全性、文件传输以及单元测试等。无论是初学者还是有一定经验的开发者,...

    Java思维导图xmind文件+导出图片

    WebService/ApacheCXF RMI/Spring RMI Hession 传统RPC技术在大型分布式架构下面临的问题 分布式架构下的RPC解决方案 Zookeeper 分布式系统的基石 从0开始搭建3个节点额度zookeeper集群 深入分析Zookeeper在...

    cxf_over_jms_kata:cxf之类

    【描述】"cxf_over_jms_kata是一个基于Apache CXF和Java消息服务(JMS)的示例项目,旨在展示如何在分布式环境中利用CXF框架提供Web服务,并通过JMS进行异步通信。该项目的核心在于理解CXF如何与消息中间件集成,以...

    javaWebService 关于讲解java调用webservice的知识

    - **实例化客户端代理**:在Java程序中,创建Web服务的代理对象,这个对象将作为与服务交互的接口。 - **调用服务方法**:通过代理对象调用Web服务的方法,传入参数并接收返回结果。 4. **示例和实践** - PDF...

    webservice

    2. **Apache CXF**:Apache CXF是一个开源的Java框架,用于构建和部署Web服务。CXF支持SOAP和RESTful两种Web服务模型,且可以与Spring框架无缝集成,使得服务的创建、配置和管理变得更加简单。 3. **Spring集成**:...

    Webservice基础与实践--课程素材包

    **Apache CXF** 是一个开源的Java框架,用于构建和部署Web服务。CXF允许开发者以Java编程语言来创建服务端和客户端应用程序,支持多种协议,如SOAP、RESTful HTTP、JSON等。它提供了丰富的API和工具,简化了Web服务...

    实战Mule:利用Mule调用XFire发布的Web服务

    XFire,现已被Apache CXF项目所取代,是一个轻量级的SOAP Web服务框架。它简化了创建和消费Web服务的过程,提供了一种快速开发Web服务的方式。尽管XFire已不再活跃,但这篇文章中提到的技术原理和实践依然适用于现代...

    JavaWebServicesUpAndRunning.chm

    工具方面,可能介绍了Apache CXF、Glassfish Metro等Java Web服务框架,它们简化了服务的开发、部署和测试过程。开发者可以利用这些工具自动生成服务端代码、客户端代理,甚至WSDL文件。 在学习过程中,你还会了解...

    实战Mule:利用Mule调用XFire发布的文件上传服务

    XFire是Apache CXF的前身,它是一个用于创建和消费Web服务的框架。XFire提供了XML到Java绑定,使得开发者可以轻松地创建服务接口,并自动生成相应的服务实现。通过XFire,我们可以快速发布一个文件上传服务,这个...

Global site tag (gtag.js) - Google Analytics