出色的Servlet應用服務器 Jetty 介紹

fmms 12年前發布 | 59K 次閱讀 Jetty 應用服務器

  Jetty是Java領域另一個出色的Web服務器,它同樣也是開源的。與tomcat不同的是它可作為一個嵌入式服務器。也就是說,如果我們在應用中加入jetty的核心jar文件,應用即可對外提供http服務。它同時也是平臺無關的java web服務器,既可以在Windos平臺上運行,也可以在Linux平臺上運行。

  大家可以登錄http://jetty.codehaus.org/jetty/站點下載Jetty的最新版本。下載的zip文件也是與平臺無關的壓縮包,不管是windows還是Linux都可使用。

  將下載的安裝zip包,解壓縮到任意的路徑下。運行Jetty需要使用如下命令:

cd D:/jetty
D:
java -jar start.jar

  建議將上面的命令寫成腳本,在windows下可寫成批處理命令,在linux下可寫成shell腳本。每次運行執行該文件就可以了。

  運行成功后,啟動瀏覽器,然后輸入http://localhost:8080/回車,看看是否成功。如果不成功首先要保證端口8080是否被占用,真的被占用那就配置一下Jetty的端口,下面會介紹的。

 

1.Jetty的基本配置

  主要介紹Jetty的端口設置,以及如何部署Web應用,Jetty是一個嵌入式的Http服務器,因此配置方式還是與tomcat有一些差異的:

  Jetty的配置文件都會在etc的目錄下,熟悉linux的目錄的人應該很眼熟,呵呵。該目錄下有如下幾類配置文件:

  1.jetty.xml:該文件是Jetty的默認配置文件,Jetty的端口號也是在這個文件里設置的。

  2.jetty-xxx.xml:該文件是為了給Jetty增加擴展應用所用的配置文件。

  3.webdefault.xml:該文件是Web應用的默認配置文件,用于控制Jetty容器里所有Web應用的通用屬性,該文件不可以修改。

 

  Jetty服務器提供HTTP服務的主類是org.mortbay.jetty.Server,所以etc路徑下的文件都需要為org.mortbay.jetty.Server配置屬性。如下所示:

<Configure id="Server" class="org.eclipse.jetty.server.Server">

 <!-- =========================================================== -->
    <!-- Set connectors                                              -->
    <!-- =========================================================== -->

    <Call name="addConnector">
      <Arg>
          <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <Set name="host"><Property name="jetty.host" /></Set>
            <Set name="port"><Property name="jetty.port" default="8080"/></Set>
            <Set name="maxIdleTime">300000</Set>
            <Set name="Acceptors">2</Set>
            <Set name="statsOn">false</Set>
            <Set name="confidentialPort">8443</Set>
        <Set name="lowResourcesConnections">20000</Set>
        <Set name="lowResourcesMaxIdleTime">5000</Set>
          </New>
      </Arg>
    </Call>

Jetty的配置文件非常巧妙,它通過配置文件來新建對象(New元素),調用對象的方法(Call元素),設置屬性(Set元素控制)。實際上,Jetty底層將會根據配置文件中的信息,使用反射來創建對象,設置屬性和調用方法。由此可見,如果我們需要在應用程序中嵌入Jetty服務器,只需要創建org.mortbay.jetty.Server對象,并調用一些列方法即可。

 

2.部署Web應用

  Jetty同樣也有兩種方式部署Web應用:

  1)自動部署:將Web應用復制到Jetty的webapps的路徑下,Jetty就會吧該Web應用自動部署到Jetty服務器中。

  2)利用配置文件部署:新增配置文件來部署Web應用,這種方式無需將web應用放置到webapps路徑下。

  自動部署就不多說了,利用配置文件部署,既是進入Contexts目錄,該目錄下的所有文件都會被系統自動加載,并且根據這些配置文件來部署應用。該路徑下默認有兩個文件:

  1)javadoc.xml:負責部署java的API應用;

  2)test.xml:負責部署jetty的實例應用。

  復制test.xml文件,將文件名改為項目名稱。并對復制文件進行修改:

 

 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Required minimal context configuration :                        -->
  <!--  + contextPath                                                  -->
  <!--  + war OR resourceBase                                          -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Set name="contextPath">/</Set>
  <Set name="war"><SystemProperty name="jetty.home" default="."/>/new</Set>

 

  上面的兩行分別制定了Web應用的虛擬路徑和文檔路徑,增加了該配置文件以后,jetty啟動時將會自動把new路徑下的web應用部署在服務器中。如果要刪除該web應用就直接刪除該配置文件即可。

 

3.配置JNDI綁定

Jetty同樣可以整合DBCP,C3P0等數據源的實現,想外界提供容器管理的數據源。實際上,對外界提供容器管理的數據源,只是Jetty的JNDI的綁定功能之一。

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!