前言

这是jersey2.2的用户向导,我们会尽力维护它的更新并且也会增加新的章节。当阅读本用户指南的时候,也要参阅Jersey API 文档,额外的信息补充JERSEY的新特性和API

如果你想要为用户向导做一些贡献或者发现有些问题没有在文档里面找到,请给我们发邮件: users@jersey.java.net 当然如果你在文档中发现一些错误,你也可以在 Jersey JIRA Issue Tracker 的文档组建下面创建一个问题。

第一章 Getting Start

本章主要是讲解如何快速的使用Jersey搭建一个RESTful服务器。这个例子使用轻量级的服务器Grizzly实现的。在本章的最后你会看见使用任何的servlet容器创建一个JavaEE Web应用。

1.1 通过Maven Archetype创建一个新的工程

创建Jersey工程需要使用Apache的Maven软件工程和管理工具。所有的Jersey产品模块都可以在Maven工程中心找到。因此基于moven的模块都是现成的,不需要在maven中增加其他的jersey模块。

注意:如果你想要使用最新的jersey版本,需要在pom.xml中添加如下内容:

<repository>
<id>snapshot-repository.java.net</id>
<name>Java.net Snapshot Repository for Maven</name>
<url>https://maven.java.net/content/repositories/snapshots/</url>
<layout>default</layout>
</repository>

使用maven的工程创建一个jersey项目是最方便的,让我们用这种方法来看一下它是怎么实现的。让我们在Grizzly容器的顶层创建一个新的Jersey项目,我们使用Jersey-provided 的 maven archetype。创建一个项目,需要执行下面的代码:

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false -DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example -DarchetypeVersion=2.2

在你的项目里面随意调整pom.xml内的groupId,包号和版本号就可以成为一个新的项目。

1.2 探索创建一个新的项目

如果已经生成了这个项目,那么在你当前的路径下已经创建了一个新的简单的服务器项目。它包含了一个标准的maven项目结构:

标准的管理配置文件 pom.xml

原文件路径 src/main/java/

测试文件路径 src/test/java/

在com.example包中有两个class文件,这个Main类主要是负责承接Grizzly容器,同时也为这个容器配置和部署JAX-RS应用。在同一个包内的另外一个类MyResource类是JAX-RS的一个实现的源代码,如下:

package com.example;
 
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
 
/**
 * Root resource (exposed at "myresource" path)
 */
@Path("myresource")
public class MyResource {
 
    /**
     * Method handling HTTP GET requests. The returned object will be sent
     * to the client as "text/plain" media type.
     *
     * @return String that will be returned as a text/plain response.
     */
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Got it!";
    }
}

一个JAX-RS是一个可以处理URI的HTTP请求的带有注解的POJO,详细内容可以看第三章。我们这个例子是处理http的GET请求,路径是/myresource,返回的类型是text/plain的例子。在这个版本中,将会给客户端请求返回:"Got it!"

1.3 执行这个例子

现在我们已经有了一个例子,那么首先我们需要执行:

mvn clean test

首先它会测试一下,如果成功会输出如下结果:

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 34.527s
[INFO] Finished at: Sun May 26 19:26:24 CEST 2013
[INFO] Final Memory: 17M/490M
[INFO] ------------------------------------------------------------------------

这说明测试已经通过了,然后执行

mvn exec:java

这样它会开始启动,然后在你的控制台会看见一下内容:

May 26, 2013 8:08:45 PM org.glassfish.grizzly.http.server.NetworkListener start
INFO: Started listener bound to [localhost:8080]
May 26, 2013 8:08:45 PM org.glassfish.grizzly.http.server.HttpServer start
INFO: [HttpServer] Started.
Jersey app started with WADL available at http://localhost:8080/myapp/application.wadl
Hit enter to stop it...

这些信息时说你的应用已经启动了,他的WADL描述符的网址是:http://localhost:8080/myapp/application.wadl。你可以在控制台执行curl http://localhost:8080/myapp/application.wadl或者在浏览器输入http://localhost:8080/myapp/application.wadl查看WADL的内容。想要查看WADL的内容请查看第15章的内容。

查看执行的结果:curl -i http://localhost:8080/myapp/myresource

HTTP/1.1 200 OK
Content-Type: text/plain
Date: Sun, 26 May 2013 18:27:19 GMT
Content-Length: 7 Got it!

在这里我们看见了Jersey的JAX-RS整个返回内容,包括返回的头和类型。

如果想要查看更加详尽的内容,包括客户端和服务器端的交互,可以执行 curl -v http://localhost:8080/myapp/myresource

* About to connect() to localhost port 8080 (#0)
* Trying 127.0.0.1...
* connected
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /myapp/myresource HTTP/1.1
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8x zlib/1.2.5
> Host: localhost:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Date: Mon, 19 Aug 2013 05:41:42 GMT
< Content-Length: 7
<
* Connection #0 to host localhost left intact
Got it!* Closing connection #0

1.4 创建一个JAVAEE WEB应用

创建一个Web应用的话需要达一个WAR包。下面是一个测试的例子

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-webapp \
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
-DgroupId=com.example -DartifactId=simple-service-webapp -Dpackage=com.example \
-DarchetypeVersion=2.2

然后执行 mvn clean package就可以打WAR包,目录在:simple-service-webapp/target/simple-service-webapp.war

JERSEY中文翻译(第一章、Getting Started、2.2)的更多相关文章

  1. JERSEY中文翻译(第一章、Getting Started、1.1.7)

    最近发现jersey特别流行,但是中文资料非常少,深感没有资料的痛苦,所以分享一下看到的内容供他人快速入门. 今天翻译第一章.Getting Started.https://jersey.java.n ...

  2. Learning Scrapy 中文版翻译 第一章

    第一章:scrapy介绍 欢迎来到scrapy之旅.通过这本书,我们将帮助你从只会一点或者零基础的Scrapy初学者达到熟练使用这个强大的框架在互联网或者其他资源抓取海量的数据.在这一章节,我们将给你 ...

  3. Gradle2.0用户指南翻译——第一章. 介绍

    翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2 ...

  4. ActiveMQ 翻译第一章 1.2小节(松耦合与ActiveMQ和何时使用ActiveMQ)

    第一章 1.2.1小节  松耦合与ActiveMQ ActiveMQ为应用程序架构提供送耦合实现组件.松耦合经常被引入到系统架构中,来减轻紧耦合的远程工程调用的使用.松耦合的设计是异步的,来自其他系统 ...

  5. JERSEY中文翻译(第三章、JAX-RS Application, Resources and Sub-Resources)

    JAX-RS Application Resource and Sub-Resource 本章要介绍的是JAX-RS的核心概念——Resouce.Sub-Resource JAX-RS的2.0的jav ...

  6. JERSEY中文翻译(第三章、模块和依赖)

    Chapter 2 Modules and Dependencencies 2.1 Java SE 兼容 所有的Jersey组建都是基于Java6开发的,所以你的Java必须是Java6以上的版本才能 ...

  7. Java 7 Concurrency Cookbook 翻译 第一章 线程管理之一

    一.简介 在计算机的世界里,当我们谈论并发时,我们指的是一系列的任务同时运行于一个计算机中.这里说的同时运行,在计算机拥有多于一个处理器或者是一个多核处理器的时候才是真正的同时,在计算机只拥有单核处理 ...

  8. Java 7 Concurrency Cookbook 翻译 第一章 线程管理之六

    十一.处理线程组中的未控制异常 每种编程语言一个很重要的特性就是其所提供的用来处理程序中错误情况的机制.Java语言和其他的现代语言一样,是提供了异常机制来处理对象程序中的错误.Java提供了很多的类 ...

  9. Java 7 Concurrency Cookbook 翻译 第一章 线程管理之五

    九.使用线程本地变量 一个并发程序的最关键特征就是共享数据.这个特性在那些继承了 Thread 类或者 实现了 Runnable 接口的对象上显得更加重要. 如果你创建一个实现了 Runnable 接 ...

随机推荐

  1. java基础之static(静态)

    静态的属性.方法等属于类而不是对象. 静态的方法能够由类直接调用,不须要将类实例化. 本篇主要说明:1.态的代码.成员变量要比构造方法先运行. 2. 子类的构造方法会默认去调用父类的不带參数的构造方法 ...

  2. redis实现秒杀demo

    代码 package com.prosay.redis; import java.util.List; import redis.clients.jedis.Jedis; import redis.c ...

  3. C# Process获取当前进程信息

    1.获取当前进程信息整理 Process.GetCurrentProcess(),返回当前程序的进程对象. Process cur = Process.GetCurrentProcess(); //当 ...

  4. PHP读写INI文件

    读INI文件 public function readini($name) { if (file_exists(SEM_PATH.'init/'.$name)){ $data = parse_ini_ ...

  5. 存储过程参数CHAR传过来null导致超时.

    调用的时候不要传NULL,可以传 '' ALTER PROCEDURE [dbo].[up_UC_GetUCExecuteEPList]          @Code VARCHAR(3) ,--ch ...

  6. SQL Server跨服务器查询的实现方法,OpenDataSource

    SQL Server跨服务器查询的方法我们经常需要用到,下面就为您介绍两种SQL Server跨服务器查询的方法,如果您感兴趣的话,不妨一看. SQL Server跨服务器查询方法一:用OPENDAT ...

  7. 案例导入和导出Scott用户

    ylbtech-Oracle:案例导入和导出Scott用户  导入和导出Scott用户 1. 导出Scott用户下的所有对象返回顶部 1.1, Microsoft Windows [版本 ] 版权所有 ...

  8. Dalvik虚拟机的内存管理

    Dalvik虚拟机的内存分为三种类型: Java Object Heap,    Bitmap Memory,   Native Heap.    下面,就这三种类型进行详细讲解:   一.    J ...

  9. maskrcnn_benchmark代码分析(3)

    数据结构 数据加载 数据后处理

  10. iOS开发-邮件发送

    Web开发的时候邮箱注册登录是必不可少的,手机号可以更换,不过相对而言,邮箱只是用于比较重要的时候用到,比如找工作的时候必填的邮箱,注册网站会员的邮箱验证.现在的手机和Web的其实操作是一样的,大多数 ...