JERSEY中文翻译(第一章、Getting Started、2.2)
前言
这是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)的更多相关文章
- JERSEY中文翻译(第一章、Getting Started、1.1.7)
最近发现jersey特别流行,但是中文资料非常少,深感没有资料的痛苦,所以分享一下看到的内容供他人快速入门. 今天翻译第一章.Getting Started.https://jersey.java.n ...
- Learning Scrapy 中文版翻译 第一章
第一章:scrapy介绍 欢迎来到scrapy之旅.通过这本书,我们将帮助你从只会一点或者零基础的Scrapy初学者达到熟练使用这个强大的框架在互联网或者其他资源抓取海量的数据.在这一章节,我们将给你 ...
- Gradle2.0用户指南翻译——第一章. 介绍
翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2 ...
- ActiveMQ 翻译第一章 1.2小节(松耦合与ActiveMQ和何时使用ActiveMQ)
第一章 1.2.1小节 松耦合与ActiveMQ ActiveMQ为应用程序架构提供送耦合实现组件.松耦合经常被引入到系统架构中,来减轻紧耦合的远程工程调用的使用.松耦合的设计是异步的,来自其他系统 ...
- 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 ...
- JERSEY中文翻译(第三章、模块和依赖)
Chapter 2 Modules and Dependencencies 2.1 Java SE 兼容 所有的Jersey组建都是基于Java6开发的,所以你的Java必须是Java6以上的版本才能 ...
- Java 7 Concurrency Cookbook 翻译 第一章 线程管理之一
一.简介 在计算机的世界里,当我们谈论并发时,我们指的是一系列的任务同时运行于一个计算机中.这里说的同时运行,在计算机拥有多于一个处理器或者是一个多核处理器的时候才是真正的同时,在计算机只拥有单核处理 ...
- Java 7 Concurrency Cookbook 翻译 第一章 线程管理之六
十一.处理线程组中的未控制异常 每种编程语言一个很重要的特性就是其所提供的用来处理程序中错误情况的机制.Java语言和其他的现代语言一样,是提供了异常机制来处理对象程序中的错误.Java提供了很多的类 ...
- Java 7 Concurrency Cookbook 翻译 第一章 线程管理之五
九.使用线程本地变量 一个并发程序的最关键特征就是共享数据.这个特性在那些继承了 Thread 类或者 实现了 Runnable 接口的对象上显得更加重要. 如果你创建一个实现了 Runnable 接 ...
随机推荐
- Getting OS version with NDK in C c++获得版本号
http://stackoverflow.com/questions/19355783/getting-os-version-with-ndk-in-c #include <cutils/pro ...
- Monitoring an IBM JVM with VisualVM
Monitoring an IBM JVM with VisualVM 分类: Java 2013-06-09 16:15 250人阅读 评论(0) 收藏 举报 JDK6 update 7 and o ...
- CSS:如何学习 CSS?
马上该转战互联网领域了,在此总结一下 CSS 学习的思路. 理解 CSS 的基本语法. 理解盒子模型. 理解文档流和定位. 理解浮动和清除. 理解各种 CSS 样式. 目前发现的最好的资源是:http ...
- JQuery攻略(六)菜单导航
jQuery菜单导航的基础应用 此章节有 1.0 页面导航 1.01面包屑菜单 1.02菜单悬停 1.03菜单快捷键 1.04两个单独的菜单 1.05折叠菜单 1.01面包屑菜单 html <b ...
- Eclipse with ADT的安装和配置
我们从安卓官方网站(https://developer.android.com/sdk/index.html#download)下载下来的eclipse是捆绑好了ADT的,所以不用自己安装插件,十分方 ...
- Windows Power Shell简介
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能. 它引入了许多非常有用的新概念,从而进一步扩展了您在 W ...
- Guava Enums
概述 Enums提供了几个操作Enum的便利方法 常用方法 Field getField(Enum<?> enumValue): 返回变量名为enumValue变量值的Field < ...
- java 常用集合list与Set、Map区别及适用场景总结
转载请备注出自于:http://blog.csdn.net/qq_22118507/article/details/51576319 list与Set.Map区别及 ...
- Java SPI(Service Provider Interface)简介
SPI 简介 SPI 全称为(Service Provider Interface),是JDK内置的一种服务提供发现机制. 一个服务(Service)通常指的是已知的接口或者抽象类,服务提供方就是对这 ...
- Kyoto Cabinet 使用及原理
Kyoto Cabinet 基本规格书 如果你知道 Tokyo Cabinet ,那么就应该知道 Kyoto Cabinet,因为他们都是同一个作者(平林幹雄)开发出来的 Key-Value 数据库. ...