前言
这几天公司新项目用要搭建一个基于spring和jersey实现的Restful webservice,maven环境是沿用的以前项目的pom,整个过程弄了半天才弄好,记录下来以备翻看,也为偶尔路过的朋友提供一份参考,不足之处敬请谅解
开发环境 eclipse Kepler + tomcat7 + jdk1.7 + maven
什么是Restful
REST指的是一组架构约束条件和原则,满足这些原则的应用或者设计就叫Restful, Restful描述了一个架构样式的互联系统(如 Web 应用程序)。REST 约束条件应用于一个整体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。
Restful原则:
1.HTTP直接传输数据
2.所有操作是无状态的
3.所有网络上的事物都可以抽象为一个资源(resource)
4,每一个资源都有唯一的URI
WEB环境配置
由于我们要实现的是JAX-RS2.0,JSR311标准(和JAX-RS1.x区别很大),eclipse->project facets选项里选择如下图
- JAX-RS2.0需要最少JDK1.7版本的支持
- web项目版本需要3.1版本,由于Tomcat7.0不能发布3.1的web模组,所以我是通过更改项目的.settings文件来实现的,此处有一个问题,即更改了项目的buildpath和编译等级为1.7版本,仍然无法选中JAX-RS为2.0,报需要JDK1.7的支持,直到删除项目,重新导入才算OK
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>mmp</display-name>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-*.xml</param-value>
</context-param>
<servlet>
<servlet-name>jerseyrs</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.zzrh.mmp.rest.RestInit</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jerseyrs</servlet-name>
<!--rest服务接口匹配路径-->
<url-pattern>/service>/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
Maven
由于沿用了之前项目的pom,导致jar包环境比较混乱也用了些时间整理,项目启动起来,大多数是报NosuchMethodExcption,ClassNotFoundException,最终整合出一个稳定的版本。此处需要注意的是,JAX-RS2.0和JAX-RS1.X 区别很大,jar包支持方面差别也很大,所以尽量从头配置pom避免一些不必要的异常。
pom.xml 标红部分为jersey rest配置