`

Apache CXF实战 构建RESTful Web Service

 
阅读更多
1. 首先是实体类,注意其中的@XmlRootElement注解

package com.googlecode.garbagecan.cxfstudy.jaxrs;

import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="Customer") 
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. RESTful Web Service接口类,可以通过修改@Produces注解来声明暴露接口返回的json还是xml数据格式

package com.googlecode.garbagecan.cxfstudy.jaxrs;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

@Path(value = "/customer") 
@Produces("*/*")
//@Produces("application/xml")
//@Produces("application/json")
public interface CustomerService {
    @GET
    @Path(value = "/{id}/info")
    Customer findCustomerById(@PathParam("id")String id);
    
    @GET
    @Path(value = "/search")
    Customer findCustomerByName(@QueryParam("name")String name);
}



3. RESTful Web Service接口实现类

package com.googlecode.garbagecan.cxfstudy.jaxrs;

import java.util.Calendar;

public class CustomerServiceImpl implements CustomerService {

    public Customer findCustomerById(String id) {
        Customer customer = new Customer();
        customer.setId(id);
        customer.setName(id);
        customer.setBirthday(Calendar.getInstance().getTime());
        return customer;
    }
    
    public Customer findCustomerByName(String name) {
        Customer customer = new Customer();
        customer.setId(name);
        customer.setName(name);
        customer.setBirthday(Calendar.getInstance().getTime());
        return customer;
    }
}


4. Server端代码

package com.googlecode.garbagecan.cxfstudy.jaxrs;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;

public class MyServer {
    public static void main(String[] args) throws Exception {
        JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean();
        factoryBean.getInInterceptors().add(new LoggingInInterceptor());
        factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
        factoryBean.setResourceClasses(CustomerServiceImpl.class);
        factoryBean.setAddress("http://localhost:9000/ws/jaxrs");
        factoryBean.create();
    }
}


5. Client端代码

package com.googlecode.garbagecan.cxfstudy.jaxrs;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;

public class MyClient {

    public static void main(String[] args) throws Exception {
        go("http://localhost:9000/ws/jaxrs/customer/1/info");
        go("http://localhost:9000/ws/jaxrs/customer/search?name=abc");
    }
    
    private static void go(String url) throws Exception {
        HttpClient client = new HttpClient();
        GetMethod method = new GetMethod(url);
        int statusCode = client.executeMethod(method);
        if (statusCode != HttpStatus.SC_OK) {
            System.err.println("Method failed: " + method.getStatusLine());
        }
        byte[] responseBody = method.getResponseBody();
        System.out.println(new String(responseBody));
    }
}


6.测试

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

转自:http://blog.csdn.net/kongxx/article/details/7527115


分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

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

    **实战Web Service与Apache CXF开发** Web服务是一种在互联网上进行通信的标准协议,它允许应用程序之间进行数据交换。Apache CXF是一个开源框架,用于构建和部署Web服务,支持多种Web服务标准,如SOAP、RESTful ...

    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

    - **Apache CXF**:一个强大的Java框架,用于构建和消费RESTful以及SOAP-based Web服务。它支持多种协议和数据格式,包括HTTP、HTTPS、gSOAP、JSON、XML等。 - **Axis2**:另一个功能齐全的Java Web服务框架,...

    基于CXF的webService本地数据交互----PC端(四)

    Apache CXF是一个开源框架,它允许开发者构建和部署服务,支持多种Web服务规范,如SOAP、RESTful等。本文将主要关注CXF在Web Service中的应用。 首先,我们需要理解Web Service的基本概念。Web Service是一种基于...

    CXF 框架实战代码---服务器端WebServices接口

    Apache CXF是一个开源的Java框架,它允许开发者构建和部署SOAP(简单对象访问协议)和RESTful(表述性状态转移)Web服务。CXF以其灵活性、易用性和与多种标准的兼容性而闻名,是开发Web服务的首选工具之一。 ### 1....

    cfx web service

    Cfx,全称是Apache CXF,是一个开源的Java框架,专门用于构建和部署Web服务。Apache CXF 2.6.2是该框架的一个版本,它提供了丰富的功能和工具,便于开发者创建、部署和管理Web服务。 **一、Apache CXF概述** ...

    CXF结合Spring开发WebServices示例工程

    Apache CXF是一个用于构建和开发Web Services的开源框架。它支持多种Web Services规范,如SOAP、RESTful API、WS-*栈等。CXF允许开发者通过Java编程模型或者基于XML的配置来创建Web Services,提供了一种简单而强大...

    cxf html.rar

    3. **JAX-RS (RESTful)**:Java API for RESTful Web Services(JAX-RS)是Java的标准API,用于构建RESTful Web服务。REST是一种轻量级的架构风格,强调资源和状态的转移,通常比SOAP更易于理解和实现。 4. **...

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

    通过上述内容的学习,我们可以了解到Web Service技术的基本概念及其在Java环境中的应用,特别是Apache CXF框架如何帮助开发者快速搭建Web Service服务端。这对于从事Java软件开发的工程师来说是非常实用的知识点。...

    CXF 框架实战代码--服务器端CXF接口发布与调用

    总之,CXF框架为开发者提供了便捷的工具来构建和部署Web服务,无论是传统的SOAP接口还是现代的RESTful API。通过学习和实践,你可以轻松地掌握CXF在服务器端发布和调用接口的技术,从而提升你的SOA和微服务开发能力...

    spring2.5+ibatis3+web service cxf 例子MyEclipse工程

    标题中的“spring2.5+ibatis3+web service cxf”揭示了这是一个关于整合Spring 2.5、iBATIS 3和Apache CXF Web服务的示例项目。这个项目是在MyEclipse环境中构建的,它是一个强大的Java集成开发环境,特别适合企业级...

    10.为CXF服务器端添加自定义拦截器进行权限检查

    首先,理解CXF(CXF: Apache CXF - A Next Generation JAXWS and JAX-RS API Implementation)是一个开源的Java框架,它用于创建和部署SOAP和RESTful Web服务。拦截器是CXF框架中的一种重要机制,它们允许我们在消息...

    CXF 框架实战代码---服务器端发布WebServices接口

    CXF框架是Apache组织提供的一款开源工具,专门用于构建和消费Web服务。本篇将深入探讨如何利用CXF框架在服务器端发布WebServices接口,并通过具体的实战代码来阐述这一过程。 一、CXF框架介绍 CXF全称是CXF-CXF ...

    xfire_1.147_zol.zip 加 Web_Service学习手册(Xfire)-christian.pdf

    5. **XFire与CXF**:XFire在后期发展成为Apache CXF,这是一个全面的Web Service框架,不仅支持SOAP,还支持RESTful风格的服务,并且集成了WS-*标准,如WS-Security、WS-Addressing等。 6. **实战演练**:通过阅读...

    cxf2.1.0实例+讲解.rar

    通过 "实战Web Service with CXF.pps" 这个文件名猜测,可能包含的是一个 PowerPoint 演示文稿,其中可能包含了对 CXF 使用的逐步解释,包括关键概念、步骤和最佳实践。这将帮助读者更好地理解 CXF 2.1.0 的核心概念...

    cxf+spring webservice server demo

    【标题】"cxf+spring webservice server demo"是一个基于Apache CXF和Spring框架构建的Web服务服务器端示例项目。这个项目展示了如何将CXF与Spring集成,以创建、部署和运行一个高效的Web服务。 【描述】指出,由于...

    web service资料集

    XFire是Apache CXF项目的前身,是一个流行的Java Web服务框架,用于快速构建和部署Web服务。这个PPT可能详细介绍了XFire的使用方法,包括如何配置、创建服务、调用服务以及处理异常。而DOM4J是Java中常用的XML处理库...

    CXF+Spring官方实例学习

    5. Spring MVC:如果涉及到Web应用,Spring MVC可以用来构建RESTful API,与CXF服务协同工作。 6. CXF客户端:CXF提供了生成和使用Web服务客户端的能力,使你可以轻松调用远程服务。 在实践中,你可以按照以下步骤...

Global site tag (gtag.js) - Google Analytics