官方網址: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