`

Apache CXF实战之四:构建RESTful Web Service

 
阅读更多

这篇文章介绍一下怎么通过CXF来发布RESTful的Web Service.

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

  1. package com.googlecode.garbagecan.cxfstudy.jaxrs;  
  2.  
  3. import java.util.Date;  
  4.  
  5. import javax.xml.bind.annotation.XmlRootElement;  
  6.  
  7. @XmlRootElement(name="Customer")   
  8. public class Customer {  
  9.     private String id;  
  10.     private String name;  
  11.     private Date birthday;  
  12.     public String getId() {  
  13.         return id;  
  14.     }  
  15.     public void setId(String id) {  
  16.         this.id = id;  
  17.     }  
  18.     public String getName() {  
  19.         return name;  
  20.     }  
  21.     public void setName(String name) {  
  22.         this.name = name;  
  23.     }  
  24.     public Date getBirthday() {  
  25.         return birthday;  
  26.     }  
  27.     public void setBirthday(Date birthday) {  
  28.         this.birthday = birthday;  
  29.     }  
  30.     @Override 
  31.     public String toString() {  
  32.         return org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(this);  
  33.     }  

2. RESTful Web Service接口类,可以通过修改@Produces注解来声明暴露接口返回的json还是xml数据格式

  1. package com.googlecode.garbagecan.cxfstudy.jaxrs;  
  2.  
  3. import javax.ws.rs.GET;  
  4. import javax.ws.rs.Path;  
  5. import javax.ws.rs.PathParam;  
  6. import javax.ws.rs.Produces;  
  7. import javax.ws.rs.QueryParam;  
  8.  
  9. @Path(value = "/customer")   
  10. @Produces("*/*")  
  11. //@Produces("application/xml")  
  12. //@Produces("application/json")  
  13. public interface CustomerService {  
  14.     @GET 
  15.     @Path(value = "/{id}/info")  
  16.     Customer findCustomerById(@PathParam("id")String id);  
  17.       
  18.     @GET 
  19.     @Path(value = "/search")  
  20.     Customer findCustomerByName(@QueryParam("name")String name);  
  21. }  

3. RESTful Web Service接口实现类

  1. package com.googlecode.garbagecan.cxfstudy.jaxrs;  
  2.  
  3. import java.util.Calendar;  
  4.  
  5. public class CustomerServiceImpl implements CustomerService {  
  6.  
  7.     public Customer findCustomerById(String id) {  
  8.         Customer customer = new Customer();  
  9.         customer.setId(id);  
  10.         customer.setName(id);  
  11.         customer.setBirthday(Calendar.getInstance().getTime());  
  12.         return customer;  
  13.     }  
  14.       
  15.     public Customer findCustomerByName(String name) {  
  16.         Customer customer = new Customer();  
  17.         customer.setId(name);  
  18.         customer.setName(name);  
  19.         customer.setBirthday(Calendar.getInstance().getTime());  
  20.         return customer;  
  21.     }  

4. Server端代码

  1. package com.googlecode.garbagecan.cxfstudy.jaxrs;  
  2.  
  3. import org.apache.cxf.interceptor.LoggingInInterceptor;  
  4. import org.apache.cxf.interceptor.LoggingOutInterceptor;  
  5. import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;  
  6.  
  7. public class MyServer {  
  8.     public static void main(String[] args) throws Exception {  
  9.         JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean();  
  10.         factoryBean.getInInterceptors().add(new LoggingInInterceptor());  
  11.         factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());  
  12.         factoryBean.setResourceClasses(CustomerServiceImpl.class);  
  13.         factoryBean.setAddress("http://localhost:9000/ws/jaxrs");  
  14.         factoryBean.create();  
  15.     }  

5. Client端代码

  1. package com.googlecode.garbagecan.cxfstudy.jaxrs;  
  2.  
  3. import org.apache.commons.httpclient.HttpClient;  
  4. import org.apache.commons.httpclient.HttpStatus;  
  5. import org.apache.commons.httpclient.methods.GetMethod;  
  6.  
  7. public class MyClient {  
  8.  
  9.     public static void main(String[] args) throws Exception {  
  10.         go("http://localhost:9000/ws/jaxrs/customer/1/info");  
  11.         go("http://localhost:9000/ws/jaxrs/customer/search?name=abc");  
  12.     }  
  13.       
  14.     private static void go(String url) throws Exception {  
  15.         HttpClient client = new HttpClient();  
  16.         GetMethod method = new GetMethod(url);  
  17.         int statusCode = client.executeMethod(method);  
  18.         if (statusCode != HttpStatus.SC_OK) {  
  19.             System.err.println("Method failed: " + method.getStatusLine());  
  20.         }  
  21.         byte[] responseBody = method.getResponseBody();  
  22.         System.out.println(new String(responseBody));  
  23.     }  

6.测试

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

分享到:
评论

相关推荐

    实战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 框架实战代码---服务器端WebServices接口

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

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

    #### 四、使用CXF开发Web Service服务端 - **集成步骤**: 1. **引入依赖**:将CXF库(cxf\lib\*.jar)以及Spring相关库(spring*.jar)添加到项目中。 2. **配置Web.xml**:在`web.xml`中配置CXF相关的Servlet...

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

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

    cxf html.rar

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

    cfx web service

    Cfx,全称是Apache CXF,是一个开源的Java框架,专门用于构建和部署Web服务。Apache CXF 2.6.2是该框架的一个版本,它提供了丰富的功能和工具,便于开发者创建、部署和管理Web服务。 **一、Apache 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. **实战演练**:通过阅读...

    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 ...

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

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

    CXF结合Spring开发WebServices示例工程

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

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

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

    cxf+spring webservice server demo

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

    webserveic开发

    【知识点五】:"实战Web Service with CXF.pps"资源 这个文件可能是关于使用CXF开发Web服务的演示文稿,涵盖了Web服务的基本概念、CXF框架的使用,以及如何在实际项目中应用CXF的详细步骤。通过学习这个资源,开发者...

    cxf2.1.0实例+讲解.rar

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

    web service资料集

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

Global site tag (gtag.js) - Google Analytics