1. 程式人生 > >Jetty使用教程(一)——開始使用Jetty

Jetty使用教程(一)——開始使用Jetty

一、Jetty簡介

1.1 什麼是Jetty

  Jetty是一個提供HHTP伺服器、HTTP客戶端和javax.servlet容器的開源專案。   這個入門教程分為五個部分:
  • 第一部分部分重點介紹如何使用Jetty,它提供如下資訊,如什麼是Jetty,從哪可以下載它,怎麼在像Maven一樣的倉庫中找到它。這一部分同樣會提供啟動Jetty和如何配置Jetty的快速入門。
  • 第二部分從更細緻的方面介紹Jetty的配置,介紹怎麼用Jetty來部署一個web應用程式,怎麼配置容器和連線,以及如何實現SSL和其它安全措施。
  • Jetty的管理員應該關注第三部分。從啟動Jetty容器開始到session管理,日誌記錄,HTTP/2支援和Jetty優化,這一章節將幫助Jetty管理員獲得更多關於Jetty服務以外的知識,這一章節同樣包含容器最常用的特性配置如JNDI和JMX。
  • 針對使用Jetty的高階使用者,第四部分著重於Jetty的開發,本章節的重點是如何將Jetty嵌入一個已經存在的應用程式中。這部分包含幾個簡單的例子和操作Jetty框架的指南。這一部分同樣包含如何使用Jetty的maven外掛以及Jetty除錯。
  • 最後一個部分是引用部分,也包含Jetty的架構資訊,Jetty的XML語法介紹,以及常見問題的解析,這章也介紹如何參與Jetty社群,如何貢獻程式碼,以及如何尋求幫助。

1.2 如何選擇Jetty的版本

  Jetty9是Jetty的最近一個版本且比之前的版本有很大的改進,其中一個改進是Jetty所有特性已經體現在Jetty9的文件裡。所以對於很多使用Jetty老版本的使用者,我們建議使用Jetty9,我們也表示將會在接下來的幾年裡積極維護這一個版本。 表格1.1Jetty版本
版本 Year Home JVM 協議 Servlet JSP 狀態

9.3

2015

Eclipse

1.8

HTTP/1.1 (RFC 7230), HTTP/2 (RFC 7540), 

WebSocket (RFC 6455, JSR 356), FastCGI

3.1

2.3

穩定版本

9.2

2014

Eclipse

1.7

HTTP/1.1 RFC2616, javax.websocket, SPDY v3

3.1

2.3

穩定版本

8

2009-

Eclipse/Codehaus

1.6

HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3

3.0

2.2

珍貴版本

7

2008-

Eclipse/Codehaus

1.5

HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3

2.5

2.1

珍貴版本

6

2006-2010

Codehaus

1.4-1.5

HTTP/1.1 RFC2616

2.5

2.0

已經作廢

5

2003-2009

Sourceforge

1.2-1.5

HTTP/1.1 RFC2616

2.4

2.0

已經作廢

4

2001-2006

Sourceforge

1.2, J2ME

HTTP/1.1 RFC2616

2.3

1.2

遠古時期

3

1999-2002

Sourceforge

1.2

HTTP/1.1 RFC2068

2.2

1.1

石器時代

2

1998-2000

Mortbay

1.1

HTTP/1.0 RFC1945

2.1

1.0

傳說級別

1

1995-1998

Mortbay

1.0

HTTP/1.0 RFC1945

-

-

神話級別

1.3 Jetty 和Java EE Web規範

  Jetty實現的Java EE規範主要是Servlet規範,最新的Java EE平臺介紹了一個新的Web 規範,建議開發者只需要大部分技術中的一部分即可。然而Jetty沒有實現Web 規範中所有的技術,Jetty設計為一個容器,可以使用外掛自由擴充套件想要的功能。

1.3.1 Java EE 7 Web規範

  在Java EE7的規範中,更新了一些重要的功能以及添加了一些新的: 表格1.2 JavaEE7 Web Profile
JSR 名稱 jetty-9.1.x是否包含 支援外掛

JSR 340

Servlet Specification API 3.1

Yes

JSR 344

Java Server Faces 2.2 (JSF)

No

Yes, Mojarra or MyFaces

JSR 245 / JSR 341

Java Server Pages 2.3/Java Expression Language 3.0 (JSP/EL)

Yes

Yes

JSR 52

Java Standard Tag Library 1.2 (JSTL)

Yes

Yes

JSR 45

Debugging Support for Other Languages 1.0

Yes (via JSP)

Yes (via JSP)

JSR 346

Contexts and Dependency Injection for the 

JavaEE Platform 1.1 (Web Beans)

No

Yes, Weld

JSR 330

Dependency Injection for Java 1.0

No

Yes as part of a CDI implementation, Weld

JSR 316

Managed Beans 1.0

No

Yes, as part of another technology

JSR 345

Enterprise JavaBeans 3.2 Lite

No

JSR 338

Java Persistance 2.1 (JPA)

No

Yes, eg Hibernate

JSR 250

Common Annotations for the Java Platform 1.2

Yes

Partially (for non-core Servlet Spec annotations)

JSR 907

Java Transaction API 1.2 (JTA)

Yes

Yes

JSR 349

Bean Validation 1.1

No

Yes as part of another technology eg JSF, or 

a stand-alone implementation such as Hiberate Validator

JSR 339

Java API for RESTful Web Services 2.0 (JAX-RS)

No

JSR 356

Java API for Websocket 1.0

Yes

No

JSR 353

Java API for JSON Processing 1.0 (JSON-P)

No

Yes, eg JSON-P reference implementation

JSR 318

Interceptors 1.2

No

Yes as part of a CDI implementation


1.3.2 Jetty EE 6 Web Profile

  下面介紹JavaEE6 Web Profile,以及與Jetty的關係

表格 1.3. Java EE 6 Web Profile

JSR Name Included with jetty-9.0.x Pluggable

JSR 315

Servlet Specification API 3.0

Yes

JSR 314

JavaServer Faces 2.0 (JSF)

No

Yes, for example, Mojarra or MyFaces

JSR 245

JavaServer Pages 2.2/Java Expression

Language 2.2 (JSP/EL)

Yes

Yes

JSR 52

Java Standard Tag Library 1.2 (JSTL)

Yes

Yes

JSR 45

Debugging Support for Other Languages 1.0

Yes (via JSP)

Yes (via JSP)

JSR 299

Contexts and Dependency Injection for

the Java EE Platform 1.0 (Web Beans)

No

Yes, Weld or OpenWebBeans

JSR 330

Dependency Injection for Java 1.0

No

Yes as part of a CDI implementation, Weld

JSR 316

Managed Beans 1.0

No

Yes, as part of another technology.

JSR 318

Enterprise JavaBeans 3.1

No

Yes, OpenEJB

JSR 317

Java Persistance 2.0 (JPA)

No

Yes, Hibernate

JSR 250

Common Annotations for the Java Platform

Yes

Partially (for non-core Servlet Spec annotations)

JSR 907

Java Transaction API (JTA)

Yes

Implementations are pluggable, such as Atomikos, JOTM, 

Jencks (Geronimo Transaction Manager)

JSR 303

Bean Validation 1.0

No

Yes as part of another technology (JSF), or a stand-alone 

implementation such as Hiberate Validator

1.4 在Maven中獲取Jetty

1.4.1 Maven座標

  Jetty從一開始就已經存在於Maven中心了,所以Maven的座標在最近幾年也發生了變化,當Jetty基於SourceForge管理時Maven的groupId是org.mortbay.jetty,當Jetty 7來到eclipse後groupId也改變了。 Jetty的POM座標如下
<dependency>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-project</artifactId>
  <version>${project.version}</version>
</dependency>

 1.4.2 在Maven中心的更新日誌

  Jetty不同版本的更新日誌記錄在一個叫做VERSIONS.txt的檔案中,也可以在Maven中心找到,座標如下 複製程式碼
<dependency>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-project</artifactId>
  <version>${project.version}</version>
  <classifier>version</classifier>
  <type>txt</type>
</dependency>
複製程式碼

 二、Jetty的使用

  你可以通過多種方式將Jetty植入使用的程式中,在不同的系統中使用它,或者做為一個獨立的伺服器來使用,這一節介紹了後者,即作為一個單獨的伺服器來部署web應用。

2.1 下載Jetty

2.1.1 下載Jetty專案

  Jetty的下載網頁為:https://www.eclipse.org/jetty/download.html   如果jdk環境支援儘量使用最新版本,將下載後的解壓放在使用的位置,以後章節將使用JETTY_HOME或者 $(jetty.home)來代表Jetty的存放路徑。

2.1.2 Jetty工程簡介

  Jetty所有頂級目錄簡介:

表格 2.1. Contents

Location Description

license-eplv10-aslv20.html

Jetty的許可檔案

README.txt

有用的開始資訊

VERSION.txt

版本資訊

bin/

存放在Unix系統下執行的shell指令碼

demo-base/

一個可執行包含示例web應用的Jetty伺服器基目錄

etc/

Jetty的配置檔案

lib/

Jetty執行所必須的jar檔案

logs/

日誌

modules/

各個模組

相關推薦

Jetty使用教程開始使用Jetty

1.1 什麼是Jetty   Jetty是一個提供HHTP伺服器、HTTP客戶端和javax.servlet容器的開源專案。   這個入門教程分為五個部分: 第一部分部分重點介紹如何使用Jetty,它提供如下資訊,如什麼是Jetty,從哪可以下載它,怎麼在

Jetty使用教程——開始使用Jetty

一、Jetty簡介 1.1 什麼是Jetty   Jetty是一個提供HHTP伺服器、HTTP客戶端和javax.servlet容器的開源專案。   這個入門教程分為五個部分: 第一部分部分重點介紹如何使用Jetty,它提供如下資訊,如什麼是Jetty,從哪可以下載它,

Spring MVC新手教程

erp -s sil troy .html 解釋 rand rtu wire 直接幹貨 model 考慮給用戶展示什麽。關註支撐業務的信息構成。構建成模型。 control 調用業務邏輯產生合適的數據以及傳遞數據給視圖用於呈獻; view怎樣對數據進行布局,以

學習 MeteoInfo二次開發教程

mat 沒有 組件 資源管理 img 教程 layer 添加 bbs 來自氣象家園:http://bbs.06climate.com/forum.php?mod=viewthread&tid=6631 按照教程,沒有太大問題,有些是對c#操作不熟悉導致。 1.添加d

netty開發教程

prot eventloop 操作 公司 大量 read readline 獲得 github Netty介紹 Netty is an asynchronous event-driven network application framework for

fullpage.js簡單教程

style 準備工作 iba 耐心 兼容性 css3 動畫 lin per orm 最近準備做一個全屏滾動的網頁,在網上搜了一堆教程,結果大多都是一些很籠統的使用方法,對我這種耐心不超過3秒的笨蛋來說,很晦澀很籠統,所以打算邊研究邊自己寫個教程,有什麽不懂的,我再回來翻看筆

方便大家學習的Node.js教程:理解Node.js

圖形 -1 iter pri attribute set run 相對 mage 理解Node.js 為了理解Node.js是如何工作的,首先你需要理解一些使得Javascript適用於服務器端開發的關鍵特性。Javascript是一門簡單而又靈活的語言,這種靈

Nginx實用教程:啟動、停止、重載配置

style 負載 繼續 local con doc lin 配置文件的修改 tex Nginx是一個功能強大的web服務器和負載均衡軟件,由俄羅斯人開發。Nginx包括一個master進程和數個worker進程,master進程用於讀取、解析配置文件和管理worker進程,

Yii2框架RESTful API教程 - 快速入門

比較 exp values cnblogs -- restful extends .cn pat 前不久做一個項目,是用Yii2框架寫一套RESTful風格的API,就去查了下《Yii 2.0 權威指南 》,發現上面寫得比較簡略。所以就在這裏寫一篇教程貼,希望幫助剛接觸Yi

微信公眾平臺開發教程 微信公眾賬號註冊流程

身份證 logs 政府 提交 註意 bsp 訪問服務器 定義 htm 具體的操作步驟 1、註冊公眾賬號 註冊地址:http://mp.weixin.qq.com/ 1)首先需要郵箱註冊: 2)郵箱激活。郵箱將會收到激活郵件,點擊激活鏈接即可。 3)需要登記個人信息。這裏需

python基礎教程

底層 技術分享 包括 什麽事 inpu 內容 很多 運算 下劃線   之所以選擇py交易有以下幾點:1、python是膠水語言(跨平臺),2、python無所不能(除了底層),3、python編寫方便(notepad++等文本編輯器就能搞事情),4、滲透方面很多腳本都是py

UI Recorder 安裝教程

dal html cmd width 第一個 alt -s windows http 前言: UI Recorder 是一款零成本UI自動化錄制工具,類似於Selenium IDE. UI Recorder 要比Selenium IDE更加強大! UI Recorder

Jquery教程

tle eap java () 成功 dom charset span asc 一、何為Jquery JQuery是一套跨瀏覽器的JavaScript庫,簡化HTML與JavaScript之間的操作。由John Resig在2006年1月的BarCamp NYC上發布第一

ThinkJS框架入門詳細教程開發環境

install devel 版本 開發 conf doc 瀏覽器 打開 變量 一、前端標配環境 1、nodeJS正確安裝,可以參考:http://www.cnblogs.com/chengxs/p/6221393.html 2、git正確安裝,可以參考:http://w

jQuery EasyUI快速入門實戰教程-入門

jquery javascript easyui 1、jQuery EasyUI概述jQuery EasyUI是一組基於jQuery的UI插件集合體,而jQuery EasyUI的目標就是幫助web開發者更輕松的打造出功能豐富並且美觀的UI界面。開發者不需要編寫復雜的javascript,也不需要

Spring Boot參考教程 SpringBoot概述及Hello World

自動 構建項目 測試 run world tar 建模 持久化 開啟 前言 筆者閑來無事,寫此文檔,不足之處,海涵! 本文檔將詳細介紹Sping Boot特性,使用方法,及與第三方框架的集成應用。使開發人員可以快速的了解SpringBoot,熟練的使用S

CXF 教程

build 引入 -o rgs lsp specified cat 啟動服務 .class CXF Web Service 簡單示例 1 準備工作 2 第一個例子 3 客戶端 3.1 使用 WSDL 生成客戶端 4 RPC 風格 5 相關命令介紹

RabbitMQ消息隊列系列教程認識RabbitMQ

ref sage 操作系統 企業級 連接 通信 集群 消息中間件 消息 摘要 RabbitMQ是最為流行的消息中間件,是處理高並發業務的利器。本系列教程,將跟大家一起學習RabbitMQ。 目錄 RabbitMQ是什麽? RabbitMQ的特點是什麽? 一

GitHub使用教程

相似之處 推送 粘貼 如何 克隆 項目 key ranch 如果 雖然個人從研一就開始接觸GitLab,但是GitHub和GitLab有很多相似之處,但是個人沒有用過,所以打算學習GitHub。把自己的心得體會記下,以備不時之需。 事先準備:註冊一個GitHub賬號,安裝g

JavaScript基礎入門教程

構造 圖片 def type 屬於 string 意思 原則 原始類型 js的數據類型   雖然js屬於弱類型語言,但其總共有6種數據類型。弱類型的意思是定義的變量沒有類型的區分,比如先執行 var num=123; 定義了一變量num存儲整數,可接下來執行 num="he