`
xuanzhui
  • 浏览: 200731 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java通过Maven整合CXF和Spring以Json的数据格式实现Restful Web Service

阅读更多

本文介绍如何通过CXF和Spring实现Restful Web Service,数据传输格式使用Json。

 

首先配置maven的库依赖,对于具体的实现可以参见

Simple JAX-RS Web Service in Java with Spring and CXF

也可以参照

Apache CXF与Spring集成实现Soap Webservice与RESTFul WebService

 

以下的依赖中spring、CXF、jackson是必须的,其他的根据需要增删

<properties>
	<java-version>1.8</java-version>
	<org.springframework-version>4.1.6.RELEASE</org.springframework-version>
	<org.hibernateframework-version>4.3.10.Final</org.hibernateframework-version>
	<org.cxf-version>3.1.1</org.cxf-version>
	<org.jackson-version>2.5.4</org.jackson-version>
	<org.postgresql-version>9.4-1201-jdbc41</org.postgresql-version>
	<org.c3p0-version>0.9.5</org.c3p0-version>
</properties>

<!-- cxf rest -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxrs</artifactId>
    <version>${org.cxf-version}</version>
</dependency>

<dependency>
	<groupId>javax.ws.rs</groupId>
	<artifactId>javax.ws.rs-api</artifactId>
	<version>2.0</version>
</dependency>

<!-- jackson -->
<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>${org.jackson-version}</version>
</dependency>

<!-- spring -->
 <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${org.springframework-version}</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

<!-- hibernate -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>${org.hibernateframework-version}</version>
</dependency>

<!-- c3p0 -->
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>${org.c3p0-version}</version>
</dependency>

<!-- postgresql -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>${org.postgresql-version}</version>
</dependency>

 

另外两个地方需要注意的是web.xml需要配置CXF的servlet

<servlet>
	<description>Apache CXF Endpoint</description>
	<display-name>cxf</display-name>
	<servlet-name>cxf</servlet-name>
	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>cxf</servlet-name>
	<url-pattern>/services/*</url-pattern>
</servlet-mapping>

 spring的context(或者bean)配置文件中需要加上暴露出去的server信息

<import resource="classpath:META-INF/cxf/cxf.xml" />  

<import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 

<!-- restful -->
<bean id="jsonProvider" 
	class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>
	
<jaxrs:server id="artistrs" address="/artistrs">  
    <jaxrs:serviceBeans>  
        <ref bean="artistsServiceImpl" />  
    </jaxrs:serviceBeans>  
    <jaxrs:providers>  
        <ref bean="jsonProvider" />  
    </jaxrs:providers>  
</jaxrs:server>  

 此处json的处理非常平滑,并不需要额外的代码,只需要在xml中声明jsonProvider,另外在类接口中通过注解的方式声明HTTP的请求方式,数据传输格式。

@Consumes("application/json")
@Produces("application/json")
public interface ArtistService {
	@POST
	@Path("/getAllArtists/")
	public List<Artists> getAllArtists();
}

 具体的测试方式可以通过chrome的插件postman,或者直接写java(使用HttpClient)代码如下

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://localhost:8080/ArticleWS/services/artistrs/getAllArtists/");
CloseableHttpResponse response2 = httpclient.execute(httpPost);

System.out.println(response2.getStatusLine());

for (Header h : response2.getAllHeaders()){
	System.out.println(h.getName() + "--" + h.getValue());
}

HttpEntity entity2 = response2.getEntity();

BufferedReader br = new BufferedReader(new InputStreamReader(entity2.getContent(),"UTF-8"));

String line;
while ((line = br.readLine())!=null)
		System.out.println(line);

// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);

response2.close();

 或者通过python console

>>> import requests
>>> resp = requests.post('http://localhost:8080/ArticleWS/services/artistrs/getAllArtists/')
>>> resp.status_code
>>> resp.content.decode()

 重点是URL路径<web root>/<cxf servlet url-pattern>/<jaxrs:server address>/<Interface Path>

 

其他相关文档

Developing RESTful Services using Apache CXF

JAX-RS and JAX-WS

分享到:
评论

相关推荐

    基于Apache CXF 3.0 Spring 4.0 Maven 3.0 构建简单Restful 接口

    通过不断学习和实践,你将能够掌握更多关于RESTful API设计的最佳实践,以及如何利用Apache CXF、Spring和Maven构建更复杂、更健壮的服务。记得不断探索和研究,因为技术总是在不断发展和进步。

    CXF RESTful spring maven CRUD

    1. **CXF与RESTful服务**:CXF支持RESTful风格的Web服务,通过定义Java接口和实现,可以轻松地创建服务端点,这些端点可以通过HTTP方法(GET、POST、PUT、DELETE)暴露出来。 2. **Spring集成**:Spring框架可以与...

    CXF2.6 spring 提供rest服务输出xml或json等格式数据

    在IT行业中,构建RESTful服务...总结一下,通过CXF 2.6与Spring的集成,我们可以轻松地创建REST服务并支持多种数据格式的输出,如XML和JSON。这使得我们的应用程序更具有灵活性和互操作性,符合现代Web服务的设计原则。

    CXF整合spring同时支持JSON和XML配置的HelloWorld

    当我们需要在Web服务中同时处理JSON和XML数据格式时,CXF和Spring的整合就显得尤为重要。 首先,我们需要在项目中引入CXF和Spring的相关依赖。这通常通过Maven或Gradle的配置文件来完成,添加对应的库,如`cxf-rt-...

    CXF3.0+Spring3.2 RESTFul服务(下)

    本文将深入探讨如何结合CXF3.0.2和Spring3.2.14来构建RESTful服务,并以JSON作为数据交换格式。 ### 1. CXF与RESTFul简介 **CXF**(Common eXtensible Framework)是一个用于构建和开发Web服务的开放源码框架,它...

    CXF Spring搭建WebServer服务器

    通过以上步骤,我们可以成功地搭建一个基于CXF和Spring的Web服务器,使用iBatis处理数据库操作,通过JSON进行数据交换。这样的架构具有良好的可扩展性和灵活性,适合作为各种企业级Web服务的基石。在实际开发过程中...

    CXF3.0+Spring3.2 RESTFul服务

    总之,CXF和Spring的组合为开发者提供了一种高效且灵活的方式来实现RESTFul服务,这种服务风格已经成为现代Web应用程序中的重要组成部分,广泛应用于API开发、微服务架构等领域。通过本教程,你已经掌握了基础的CXF ...

    cxf restful

    在本案例中,我们将深入探讨如何在不依赖Spring框架的情况下,仅使用CXF实现一个简单的RESTful服务,该服务能返回JSON格式的数据。 1. **CXF与RESTful服务**: RESTful是一种架构风格,强调资源的识别和通过HTTP...

    CXF Restful服务简单例子

    \n\n五、CXF RESTful服务与CXF_WS文件\n在提供的压缩包文件`CXF_WS`中,可能包含了用于创建和运行CXF RESTful服务的相关文件,如Java源代码、配置文件、Maven pom.xml文件等。这些文件可以帮助我们了解和实践CXF ...

    cxf发布RestFul接口。 maven

    CXF(Camel XFire)是一个强大的服务框架,它允许开发者以多种方式创建和部署Web服务,包括基于Java API for RESTful Web Services (JAX-RS)的RESTful接口和基于Java API for XML Web Services (JAX-WS)的SOAP服务。...

    Spring3整合CXF2.7.10

    本文将详细介绍如何将Spring3与CXF2.7.10进行整合,以创建一个简单的Web服务示例。 ### 1. Spring与CXF整合的基础 - **Spring的作用**: Spring通过提供容器来管理对象的生命周期和依赖关系,使得开发者可以更专注...

    ssm-maven-cxf-oracle-RESTful WebService

    使用了cxf 同时实现了 RESTful WebService --项目启动后访问地址 http://localhost:8080/springMVC/services/rest/equipQuery/getUserById/1?_type=json 本人没有一一列明 xml json 以及post get请求 大家可以在...

    CXF利用Json格式传输对象

    它支持多种协议和标准,如SOAP、RESTful、WS-*等,并且能够处理各种数据格式,包括XML和JSON。本篇文章将深入探讨如何利用CXF框架在Java环境中以JSON格式传输对象。 JSON(JavaScript Object Notation)是一种轻量...

    cxf与spring整合webservice所需jar

    CXF允许开发者通过JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)标准来创建Web服务。它提供了多种协议支持,如SOAP、REST、XML和JSON,以及WS-*规范的实现,如WS-Security...

    CXF WebService整合Spring

    4. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,定义一个`WebServiceServerFactoryBean`,并指定WebService接口和实现类。这样,Spring会自动创建并管理WebService服务器。 5. **启动...

    ApacheCxf提供Json格式接口服务demo

    Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。这个项目的核心目标是使开发Web服务变得简单而高效。在本示例中,我们将探讨如何使用Apache CXF来提供JSON格式的接口服务。 ...

    使用CXF开发RESTFul服务

    Apache CXF是一个开源的Java框架,主要用于构建和消费Web服务,包括SOAP和RESTful服务。REST(Representational State Transfer)是一种轻量级的Web服务交互方式,强调资源的表示和操作。 【描述】中的链接指向了一...

    spring整合CXF开发webService接口所需的全部jar包

    - **协议支持**:CXF不仅支持SOAP,还支持RESTful风格的服务,以及XML和JSON等多种数据格式。 - **WS-*扩展**:CXF支持多种Web服务扩展,如WS-Security、WS-Addressing等。 3. **Spring与CXF整合**: - **Spring...

    CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载

    1. **CXF Web服务**:CXF允许开发者通过Java注解或XML配置来定义服务接口和实现,然后自动将其转换为Web服务。它可以处理SOAP消息,也可以处理RESTful请求。在本项目中,可能使用了CXF的Wsdl2Java工具生成了客户端和...

    CXF restful风格WebService

    - **JSON和XML支持**:CXF内置了对JSON和XML的支持,可以通过`@Consumes`和`@Produces`注解指定输入和输出格式。 - **安全机制**:可以集成OAuth、JWT等安全框架,实现RESTful服务的安全访问。 总的来说,Apache ...

Global site tag (gtag.js) - Google Analytics