Jersey 入门案例

来源:互联网 发布:左轮枪cad图纸数据 编辑:程序博客网 时间:2024/06/06 09:49

Jersey 入门案例

简介

最近公司项目一直在用Restful 进行开发,我们使用的框架是Jersey框架,所以分享出来与大家一起学习。
具体RESTful的介绍,网上有很多资料,成熟的框架也很多,大家可以去网上查找,这里就不过多介绍。
Jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。尽管相对年轻,它已经是一个产品级的 RESTful service 和 client 框架。
API地址 https://jersey.java.net/apidocs/latest/jersey/index.html
Jersey有以下优点:

  • 轻量级,快速开发
  • 优秀的文档和案例
  • 与Spring较好的集成
  • 可以集成到其它库/框架 (Grizzly, Netty)

快速入门

本章主要用于完成Jersey框架的Hello World项目。通过该项目可以使第一次解除Jersey框架的朋友,对Jersey框架有一个整体的了解。

系统要求

本次项目使用与Grizzly集成的Jersry框架,使用的java版本为JDK1.8。

Maven依赖

项目需要使用到的Maven依赖有Jersey依赖、Spring依赖、Jersey与Spring整合依赖
具体的Pom文件内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.lx</groupId>  <artifactId>chapter1-1</artifactId>  <packaging>war</packaging>  <version>1.0-SNAPSHOT</version>  <name>chapter1-1 Maven Webapp</name>  <url>http://maven.apache.org</url>  <!--设置参数-->  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   <!--jersey版本-->    <jersey.version>2.21</jersey.version>  </properties>  <dependencies>    <!-- Jersey 依赖 -->    <dependency>      <groupId>org.glassfish.jersey.containers</groupId>      <artifactId>jersey-container-servlet-core</artifactId>      <version>${jersey.version}</version>    </dependency>    <dependency>      <groupId>org.glassfish.jersey.media</groupId>      <artifactId>jersey-media-moxy</artifactId>      <version>${jersey.version}</version>    </dependency>    <dependency>      <groupId>org.glassfish.jersey.ext</groupId>      <artifactId>jersey-bean-validation</artifactId>      <version>${jersey.version}</version>    </dependency>    <!-- Jersey + Spring 整合包-->    <dependency>      <groupId>org.glassfish.jersey.ext</groupId>      <artifactId>jersey-spring3</artifactId>      <version>${jersey.version}</version>      <!--排除jersey spring 整合中带的spring 依赖-->      <exclusions>        <exclusion>          <groupId>org.springframework</groupId>          <artifactId>spring</artifactId>        </exclusion>        <exclusion>          <groupId>org.springframework</groupId>          <artifactId>spring-core</artifactId>        </exclusion>        <exclusion>          <groupId>org.springframework</groupId>          <artifactId>spring-web</artifactId>        </exclusion>        <exclusion>          <groupId>org.springframework</groupId>          <artifactId>spring-beans</artifactId>        </exclusion>        <exclusion>          <groupId>org.springframework</groupId>          <artifactId>spring-context</artifactId>        </exclusion>      </exclusions>    </dependency>    <!--引入 Spring  依赖 -->    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-core</artifactId>      <version>4.2.1.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>      <version>4.2.1.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-web</artifactId>      <version>4.2.1.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-tx</artifactId>      <version>4.2.1.RELEASE</version>    </dependency>  </dependencies>  <build>    <finalName>chapter1-1</finalName>  </build></project>

基本项目结构

这里写图片描述
整体项目结构就是一个普通的Maven web项目,资源包用于编写RESTful服务。

web.xml配置文件

web.xml配置文件主要用于读取Spring的配置文件,设置Jersey使用的Servlet等内容。
具体内容如下:
这里写图片描述

Hello World服务

  • 列表项为了便于理解,我们将服务所在的包命名为xxx.resource,也即为资源包。
    -创建HelloResource类,对于提供服务的类,Jersey框架不需要继承任何类或者实现任何接口,也即普通的java类即可。
    @Path注解表示该服务的访问路径,Jersey支持强大的注解开发,具体常用的注解会在后面章节进行介绍。
    这里写图片描述

启动测试

将项目放到Tomcat下运行。
对于Jersey提供的RESTful服务有两种测试方式,
一种是访问http://localhost:8080/application.wadl,看到如下页面,表示服务提供成功。
这里写图片描述
另一种是访问http://localhost:8080/hello/hello,看到返回hello表示服务提供成功
这里写图片描述

web.xml文件另一种编写方式

前面介绍的web.xml的配置方式,是初始化Jersey 使用的Servlet时,声明提供服务的资源包所在的位置。如果对应的资源包较多,或者后期使用到过滤器等组件时,现在的配置方式就不能满足使用需求了,所以在开发中博主推荐使用下面的方式进行配置。

  1. 编写程序入口Application类
    相对于资源类不需要继承或者实现不同,Application需要继承ResourceConfig类,并在该类初始化时,声明服务所在的资源包,具体代码如下
    这里写图片描述
    ApplicationPath表示该程序入口对应的路径。类似于Servlet在web.xml中配置 的路径。
  2. web.xml中配置程序入口
    web.xml中的改变,只需要调整下初始化Servlet时,初始化参数即可,由原来的配置资源包位置,调整为现在的配置程序入口,也即Application类。
    这里写图片描述
  3. 测试
    具体的测试方式和前面的介绍的测试方式一致。

使用Grizzly启动服务

前面介绍项目的启动方式是通过Tomcat启动服务,项目正式上线时需要使用该方式启动,但是我们在开发过程中,每次都使用Tomcat的相对较为麻烦,由于我们使用的是与Grizzly集成的Jersey框架,所以我们可以使用Grizzly来自动服务。

  1. 引入依赖
    使用Grizzly启动服务,需要多引入三个依赖.
    这里写图片描述
  2. 编写Main方法
    注意图片中的红色提示,确保导包正确。
    这里写图片描述
  3. 测试
    启动该Main方法,正常启动会报以下提示,之后按照上面介绍的方式测试即可。
    这里写图片描述

到现在我们Jersey的入门Hello World程序已经全部介绍完成。

1 0