博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring 4 集成Apache CXF开发JAX-RS Web Service
阅读量:6689 次
发布时间:2019-06-25

本文共 8112 字,大约阅读时间需要 27 分钟。

什么是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插件:

4.0.0
cn.edu.hdu.wsdemo
wsdemo
war
0.0.1-SNAPSHOT
wsdemo Maven Webapp
http://maven.apache.org
3.0.3
3.1
2.0.1
4.1.4.RELEASE
3.2.8
1.1.1
junit
junit
4.11
test
javax.servlet
javax.servlet-api
3.1.0
provided
org.slf4j
slf4j-api
1.7.21
org.slf4j
slf4j-log4j12
1.7.21
log4j
log4j
1.2.17
com.google.code.gson
gson
2.6.2
org.apache.commons
commons-lang3
3.4
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.aspectj
aspectjweaver
1.8.7
com.alibaba
druid
1.0.15
mysql
mysql-connector-java
5.1.38
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.2.5
org.apache.cxf
cxf-rt-frontend-jaxrs
${cxf.version}
org.apache.cxf
cxf-rt-transports-http
${cxf.version}
org.apache.cxf
cxf-rt-rs-service-description
${cxf.version}
commons-httpclient
commons-httpclient
${httpclient.version}
javax.ws.rs
javax.ws.rs-api
${jax.ws.rs}
org.codehaus.jackson
jackson-jaxrs
${jackson.version}
wsdemo
maven-compiler-plugin
3.0
1.7
1.7
UTF-8
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
View Code

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

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

CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
CXFServlet
/ws/*

然后,配置jaxrs:server:

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

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
param = new HashMap
(); param.put("id", id); List
userList = userService.query(param); return userList.size() > 0 ? userList.get(0) : null; } @POST @Path("/users/getall") public List
getAllUsers() { List
userList = userService.query(new HashMap
()); return userList; }}

测试服务

执行maven命令:clean tomcat:run

启动成功后,浏览器输入:

结果:

输入:

结果:

 

输入:

结果:

源码

 

参考资料

 

转载于:https://www.cnblogs.com/chenpi/p/6110040.html

你可能感兴趣的文章
2014年最新世界各国面积排名(172个国家)
查看>>
socket编程演示样例(多线程)
查看>>
C++ 初始化与赋值
查看>>
碰到的异常
查看>>
TOMCAT 关闭报错:Tomcat did not stop in time. PID file was not removed
查看>>
Android对话框-上篇-之系统对话框
查看>>
利用Segue在视图控制器间传值的问题
查看>>
登台轮赠春联 厦门边检便利通关暖台胞
查看>>
发动机存隐患 现代起亚宣布在美召回16.8万辆车
查看>>
长春7旬老人收藏明信片48年 6千张见证国家变迁
查看>>
最前线|VIPKID正寻求4-5亿美元新一轮融资,估值达60亿美元
查看>>
文 OR 理?答案都在这里!
查看>>
ES6 Module之export
查看>>
XML+JSON面试题都在这里
查看>>
教你如何攻克Kotlin中泛型型变的难点(实践篇)
查看>>
2018Android面试经历
查看>>
不受限对抗样本挑战赛介绍
查看>>
推荐10个Java方向最热门的开源项目(8月)
查看>>
浅解前端必须掌握的算法(三):直接插入排序
查看>>
[译] TensorFlow 教程 #06 - CIFAR-10
查看>>