歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Jetty 9嵌入式開發

Jetty 9嵌入式開發

日期:2017/3/1 9:37:09   编辑:Linux編程

官方網址:http://www.eclipse.org/jetty/

下載地址:http://download.eclipse.org/jetty/stable-9/dist/

文檔網址:http://www.eclipse.org/jetty/documentation/

當前Jetty網址上推薦使用的穩定版本:Jetty9.0。

使用Jetty作為嵌入式服務器 http://www.linuxidc.com/Linux/2013-07/86983.htm

Jetty 源碼分析 http://www.linuxidc.com/Linux/2013-10/90986.htm

Jetty安裝學習並展示 http://www.linuxidc.com/Linux/2014-05/101993.htm

Jetty在Eclipse中的安裝 http://www.linuxidc.com/Linux/2013-10/90991.htm

Linux(RedHat 5.8)下 安裝Jetty 部署 使用 http://www.linuxidc.com/Linux/2014-10/108342.htm

介紹

Jetty9內容位於http://www.eclipse.org/jetty/documentation。

直接鏈接:

http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html

Jetty有一個標語,“不要部署你的應用在Jetty上,部署Jetty在你的應用中”。這意味著可選擇使用Jetty捆綁你的應用作為一個標准WAR進行部署。Jetty設計成一個軟件組件,可以實例化並且使用在Java程序中,例如:如何POJO。但是另外一種方法,以嵌入式模式運行Jetty,這意味著把HTTP模塊放入到你的應用中,而不是把你的應用放入到HTTP服務中。

本教程引導你逐步從最簡單的Jetty服務實例到使用標准部署描述運行多個Web應用。大部分示例的源代碼是標准Jetty項目的一部分。

在學習該教程之前,完成一個HelloWorld教程是值得的。該教程可以在“嵌入式Jetty網絡研討會記錄”中找到。

Jetty版本:本教程的代碼來自於Jetty7,但是也應該在Jetty 8中可以使用。對於最新的穩定版本,參考最新發行版的鏈接代碼。可能與本教程中給出的代碼例子有稍微的不同。

概述

為了嵌入Jetty服務,通常執行下面的步驟:

1)創建一個服務

2)添加和配置連接器

3)添加和配置處理器

4)添加和配置Servlet、Webapp到處理器

5)啟動服務

6)等待(join服務防止主線程退出)

創建一個服務

下面的代碼來自於SimplestServer.jar,實例化和運行一個最簡單的Jetty服務

http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/embedded/SimplestServer.html

public class SimplestServer

{

public static void main(String[] args) throws Exception

{

Server server = new Server(8080);

server.start();

server.join();

}

}

在端口8080上運行一個HTTP服務。這不是非常有用的服務,因為它不處理,對於每個請求只是返回一個404錯誤。

編寫處理器

為了生成請求的響應,Jetty要求在服務上設置一個Handler。一個處理器可能:

1) 檢查和修改HTTP請求

2)生成完整的HTTP詳情

3)調用其他的處理器(參見HandlerWrapper)

4)選擇一個或者多個處理器調用(參考HandlerCollection)

http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/server/handler/HandlerWrapper.html

Hello world處理器:

下面代碼基於HelloHandler.java,顯示一個簡單的Helloworld處理器。

public classHelloHandler extends AbstractHandler

{

public void handle(String target,RequestbaseRequest,HttpServletRequest request,HttpServletResponse response)

throws IOException, ServletException

{

response.setContentType("text/html;charset=utf-8");

response.setStatus(HttpServletResponse.SC_OK);

baseRequest.setHandled(true);

response.getWriter().println("<h1>HelloWorld</h1>");

}

}

傳遞給handle方法的參數包括:

1) target - 請求的目標,它可以是一個URI或者命名分發器的名稱

2) baseRequest – Jetty可變請求對象,它總是解包的

3) request - 不可變的請求對象,它可能已經被封裝

4) response - 響應,它可能已經被封裝

處理器設置請求的狀態,內容類型,在使用writer生成請求體之前標注請求已經處理(後續就不再處理)。

下面的代碼來自於OneHandler.java,顯示Jetty服務如何使用該處理器。

public staticvoid main(String[] args) throws Exception

{

Server server = new Server(8080);

server.setHandler(new HelloHandler());

server.start();

server.join();

}

現在你知道基於Jetty編寫一個HTTP服務所需要了解的所有東西。然而,復雜的請求處理通常使用多處理器構建。我們在後面章節中看看它是如何組合處理器的。你能查看Jetty的org.eclipse.jetty.server.handler包中有那些可用處理器。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-11/109584p2.htm

Copyright © Linux教程網 All Rights Reserved