本文介绍如何通过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>
其他相关文档
相关推荐
通过不断学习和实践,你将能够掌握更多关于RESTful API设计的最佳实践,以及如何利用Apache CXF、Spring和Maven构建更复杂、更健壮的服务。记得不断探索和研究,因为技术总是在不断发展和进步。
1. **CXF与RESTful服务**:CXF支持RESTful风格的Web服务,通过定义Java接口和实现,可以轻松地创建服务端点,这些端点可以通过HTTP方法(GET、POST、PUT、DELETE)暴露出来。 2. **Spring集成**:Spring框架可以与...
在IT行业中,构建RESTful服务...总结一下,通过CXF 2.6与Spring的集成,我们可以轻松地创建REST服务并支持多种数据格式的输出,如XML和JSON。这使得我们的应用程序更具有灵活性和互操作性,符合现代Web服务的设计原则。
当我们需要在Web服务中同时处理JSON和XML数据格式时,CXF和Spring的整合就显得尤为重要。 首先,我们需要在项目中引入CXF和Spring的相关依赖。这通常通过Maven或Gradle的配置文件来完成,添加对应的库,如`cxf-rt-...
本文将深入探讨如何结合CXF3.0.2和Spring3.2.14来构建RESTful服务,并以JSON作为数据交换格式。 ### 1. CXF与RESTFul简介 **CXF**(Common eXtensible Framework)是一个用于构建和开发Web服务的开放源码框架,它...
通过以上步骤,我们可以成功地搭建一个基于CXF和Spring的Web服务器,使用iBatis处理数据库操作,通过JSON进行数据交换。这样的架构具有良好的可扩展性和灵活性,适合作为各种企业级Web服务的基石。在实际开发过程中...
总之,CXF和Spring的组合为开发者提供了一种高效且灵活的方式来实现RESTFul服务,这种服务风格已经成为现代Web应用程序中的重要组成部分,广泛应用于API开发、微服务架构等领域。通过本教程,你已经掌握了基础的CXF ...
在本案例中,我们将深入探讨如何在不依赖Spring框架的情况下,仅使用CXF实现一个简单的RESTful服务,该服务能返回JSON格式的数据。 1. **CXF与RESTful服务**: RESTful是一种架构风格,强调资源的识别和通过HTTP...
\n\n五、CXF RESTful服务与CXF_WS文件\n在提供的压缩包文件`CXF_WS`中,可能包含了用于创建和运行CXF RESTful服务的相关文件,如Java源代码、配置文件、Maven pom.xml文件等。这些文件可以帮助我们了解和实践CXF ...
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进行整合,以创建一个简单的Web服务示例。 ### 1. Spring与CXF整合的基础 - **Spring的作用**: Spring通过提供容器来管理对象的生命周期和依赖关系,使得开发者可以更专注...
使用了cxf 同时实现了 RESTful WebService --项目启动后访问地址 http://localhost:8080/springMVC/services/rest/equipQuery/getUserById/1?_type=json 本人没有一一列明 xml json 以及post get请求 大家可以在...
它支持多种协议和标准,如SOAP、RESTful、WS-*等,并且能够处理各种数据格式,包括XML和JSON。本篇文章将深入探讨如何利用CXF框架在Java环境中以JSON格式传输对象。 JSON(JavaScript Object Notation)是一种轻量...
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...
4. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,定义一个`WebServiceServerFactoryBean`,并指定WebService接口和实现类。这样,Spring会自动创建并管理WebService服务器。 5. **启动...
Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。这个项目的核心目标是使开发Web服务变得简单而高效。在本示例中,我们将探讨如何使用Apache CXF来提供JSON格式的接口服务。 ...
Apache CXF是一个开源的Java框架,主要用于构建和消费Web服务,包括SOAP和RESTful服务。REST(Representational State Transfer)是一种轻量级的Web服务交互方式,强调资源的表示和操作。 【描述】中的链接指向了一...
- **协议支持**:CXF不仅支持SOAP,还支持RESTful风格的服务,以及XML和JSON等多种数据格式。 - **WS-*扩展**:CXF支持多种Web服务扩展,如WS-Security、WS-Addressing等。 3. **Spring与CXF整合**: - **Spring...
1. **CXF Web服务**:CXF允许开发者通过Java注解或XML配置来定义服务接口和实现,然后自动将其转换为Web服务。它可以处理SOAP消息,也可以处理RESTful请求。在本项目中,可能使用了CXF的Wsdl2Java工具生成了客户端和...
- **JSON和XML支持**:CXF内置了对JSON和XML的支持,可以通过`@Consumes`和`@Produces`注解指定输入和输出格式。 - **安全机制**:可以集成OAuth、JWT等安全框架,实现RESTful服务的安全访问。 总的来说,Apache ...