Apache CXF实现的RESTful形式的webservices

我在上一篇文章(http://www.zifangsky.cn/2016/03/apache-cxf实现的soap形式的webservices/)中说了下如何实现SOAP方式的web service,这篇文章将继续说明如何实现RESTful形式的web service

(1)项目结构:

在这里,我没有新建一个项目,而是在上一个项目的基础上实现的,具体来说就是新建了3个文件,如下图所示:

其中,User类是一个普通的实体类,RestService和RestServiceImpl类分别表示服务接口和它的实现类

(2)User.java:

package cn.zifangsky.entity;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="userInfo")
public class User {
	private int id;
	private String name;
	private String contact;

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getContact() {
		return contact;
	}
	public void setContact(String contact) {
		this.contact = contact;
	}

}

(3)RestService.java:

package cn.zifangsky.service;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import cn.zifangsky.entity.User;

public interface RestService {

	@GET
	@Path(value="/user/{id}")
	@Produces(value = { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	public User getUser(@PathParam("id") int id);
}

(4)RestServiceImpl.java:

package cn.zifangsky.service.impl;

import cn.zifangsky.entity.User;
import cn.zifangsky.service.RestService;

public class RestServiceImpl implements RestService {
	public User getUser(int id) {
		User user = new User();
		user.setId(id);
		user.setName("zifangsky");
		user.setContact("http://www.zifangsky.cn");
		return user;
	}

}

(5)web.xml不变,修改service-beans.xml:

添加<jaxrs:server></jaxrs:server>节点,表示是RESTful服务

<jaxrs:server id="userRest" address="/services/rest">
		<jaxrs:serviceBeans>
			<bean class="cn.zifangsky.service.impl.RestServiceImpl" />
		</jaxrs:serviceBeans>

		<jaxrs:extensionMappings>
			<entry key="json" value="application/json" />
			<entry key="xml" value="application/xml" />
		</jaxrs:extensionMappings>

	</jaxrs:server>

添加之后,service-beans.xml这个文件的完整代码是:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
	xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:soap="http://cxf.apache.org/bindings/soap"
	xsi:schemaLocation="  
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans.xsd  
    http://cxf.apache.org/jaxws 
    http://cxf.apache.org/schemas/jaxws.xsd
    http://cxf.apache.org/jaxrs
    http://cxf.apache.org/schemas/jaxrs.xsd ">

	<bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
	<bean id="loggingFeature" class="org.apache.cxf.feature.LoggingFeature" />
	<bean id="inLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" />
	<jaxws:server id="sayHelloServices" serviceClass="cn.zifangsky.service.CXFService" address="/services/soap" >
		<jaxws:serviceBean>
			<bean class="cn.zifangsky.service.impl.CXFServiceImpl" />
		</jaxws:serviceBean>
		<jaxws:outInterceptors>
			<ref bean="outLoggingInterceptor" />
		</jaxws:outInterceptors>
		<jaxws:inInterceptors>
			<ref bean="inLoggingInterceptor" />
		</jaxws:inInterceptors>
		<jaxws:features>
			<ref bean="loggingFeature" />
			<wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing" />
		</jaxws:features>

	</jaxws:server>

	<jaxrs:server id="userRest" address="/services/rest">
		<jaxrs:serviceBeans>
			<bean class="cn.zifangsky.service.impl.RestServiceImpl" />
		</jaxrs:serviceBeans>

		<jaxrs:extensionMappings>
			<entry key="json" value="application/json" />
			<entry key="xml" value="application/xml" />
		</jaxrs:extensionMappings>

	</jaxrs:server>

</beans>

(6)测试:

整个配置到这里已经就完成了,在tomcat中启动项目,效果是这样:

在浏览器中访问:http://localhost:8080/CXFDemo/services/rest/user/9

可以看出,结果是正确,到此全部配置结束

时间: 2024-10-30 15:56:16

Apache CXF实现的RESTful形式的webservices的相关文章

Apache CXF实现的SOAP形式的webservices

前言:常用的web service有两种形式,SOAP和RESTful.这里先说SOAP的实现步骤,RESTful的形式后面再说 一 建项目,导jar包 (1)项目结构 (2)在eclipse中新建一个动态web项目"CXFDemo",并导入cxf中的jar包(路径:/WEB-INF/lib/).当然,可以去官网下载,也可以直接使用我用过的jar包,链接:http://pan.baidu.com/s/1pKyelAV (3)配置web.xml: <?xml version=&qu

使用Apache CXF开发WebServices服务端、客户端

在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = Celtix + XFire. CXF 继承了 Celtix 和 XFire 两大开源项目的精华, 提供了对 JAX-WS 全面的支持,并且提供了多种 Binding .DataBinding.Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code Fi

Apache CXF实现Web Service(4)——Tomcat容器和Spring实现JAX-RS(RESTful) web service

准备 我们仍然使用 Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 中的代码作为基础,并引入spring来进行RESTful web service的配置和管理. 项目目录结构如下图 首先我们要在web.xml中加入通过Spring的ContextLoaderListener加载的Spring运行时环境以及CXF的Spring配置文件 web.xml <?xml version="

Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通ServletJAX-RS(RESTful) web service

起步 参照这一系列的另外一篇文章: Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 首先在eclipse中新建一个Dynamic Web Project,然后实现上篇文章中的所有类,唯一不同的是这里,我们不需要一个Server.java来启动一个Web Service.我们用CXF自带的org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServ

Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service

实现目标 http://localhost:9000/rs/roomservice 为入口, http://localhost:9000/rs/roomservice/room为房间列表, http://localhost:9000/rs/roomservice/room/001/ 为001号房间的信息, http://localhost:9000/rs/roomservice/room/001/person 为在001号房间主的人的列表 在Eclipse中新建一个Java Project (可

Apache CXF 102 CXF with REST

前言 续上篇Apache CXF 101,摘抄部分REST概念性知识,以运行实例考察CXF对REST的支持. 目录 1 REST简介 2 工具 3 运行实例 内容 本Spike记录中内容,如无特别指出,均引用[1]. 1 REST简介 有两种实现Web Service的主要方式:SOAP(Simple Object Access Protocl)和REST架构风格(Representational State Transfer architecture style). 用REST架构风格构建的服

【Apache CXF】CXF对JAX-RS的支持

用CXF构建RESTful services有两种方式:·CXF对JAX-RS的实现.·使用JAX-WS Provider/Dispatch API.官网上还有Http Bindings方式,他需要做一些繁琐的工作去创建资源再映射到服务上,这种方式从2.6时已经被移除了.刚好我这里有几个工程都是用第一种方式实现的,在这里便主要记录一下spring+CXF构建RESTful service. 首先列举一下JAX-RS的一些常用注解.·@Path:指定资源的URI.·@Produces/@Consu

Apache cxf 整合 Spring MVC

1.添加依赖pom.xml <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.o

Apache CXF实现WebService开发(一)

Apache CXF简介 Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS .这些 Services 可以支持多种协议,比如:SOAP.XML/HTTP.RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP.JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝