且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Spring 4 集成Apache CXF开发JAX-RS Web Service

更新时间:2022-09-16 18:03:20

什么是JAX-RS

在JSR-311规范中定义,即Java API for RESTful Web Services,一套Java API,用于开发 RESTful风格的Webservice。

工程概况

主要功能:用户增删改查controller(not RESTful,懒得改了) + 查询用户webservice(RESTful)

框架:spring+spring mvc+mybatis

数据库:mysql

构建工具:maven

创建工程

使用IDE创建一个maven工程,pom.xml文件如下,引入cxf、spring、mybatis等依赖,添加tomcat-maven插件:

Spring 4 集成Apache CXF开发JAX-RS Web Service View Code

关于spring+spring mvc+mybatis框架的相关配置就不细说了,这里主要关注与CXF相关的配置。

首先,是在web.xml添加一个servlet,拦截Web Service的请求:

Spring 4 集成Apache CXF开发JAX-RS Web Service
  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/ws/*</url-pattern>
  </servlet-mapping>
Spring 4 集成Apache CXF开发JAX-RS Web Service

然后,配置jaxrs:server:

Spring 4 集成Apache CXF开发JAX-RS Web Service
    <bean id="userWSService" class="cn.edu.hdu.wsdemo.wsservice.UserWSService"></bean>
    <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />

    <jaxrs:server id="users" address="/apis">
        <jaxrs:serviceBeans>
            <ref bean="userWSService" />
        </jaxrs:serviceBeans>
        <jaxrs:providers>
            <ref bean='jsonProvider' />
        </jaxrs:providers>
    </jaxrs:server>
Spring 4 集成Apache CXF开发JAX-RS Web Service

最后,编写我们的webservice具体实现:

Spring 4 集成Apache CXF开发JAX-RS Web Service
package cn.edu.hdu.wsdemo.wsservice;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import org.springframework.beans.factory.annotation.Autowired;

import cn.edu.hdu.wsdemo.model.User;
import cn.edu.hdu.wsdemo.service.user.IUserService;

@Path("/userwsservice/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class UserWSService
{

    @Autowired
    private IUserService userService;

    @GET
    @Path("/users/{id}/")
    public User getUser(@PathParam("id") String id)
    {
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("id", id);
        List<User> userList = userService.query(param);

        return userList.size() > 0 ? userList.get(0) : null;
    }

    @POST
    @Path("/users/getall")
    public List<User> getAllUsers()
    {
        List<User> userList = userService.query(new HashMap<String, Object>());
        return userList;
    }

}
Spring 4 集成Apache CXF开发JAX-RS Web Service

测试服务

执行maven命令:clean tomcat:run

启动成功后,浏览器输入:http://localhost:8080/wsdemo/ws

结果:

Spring 4 集成Apache CXF开发JAX-RS Web Service

输入:http://localhost:8080/wsdemo/ws/apis?_wadl

结果:

Spring 4 集成Apache CXF开发JAX-RS Web Service

 

输入:http://localhost:8080/wsdemo/ws/apis/userwsservice/users/4

结果:

Spring 4 集成Apache CXF开发JAX-RS Web Service


本文转自风一样的码农博客园博客,原文链接:http://www.cnblogs.com/chenpi/p/6110040.html,如需转载请自行联系原作者