<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ZT文萃

    本博不原創,轉帖自己感興趣那些事人物,什么入眼貼什么,隨心所欲。
    posts - 93, comments - 5, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1207_zhuxl_liberty/1207_zhuxl_liberty.html

    2012 年 6 月 15 日,IBM 正式發布了 WebSphere Application Server V8.5 版本(簡稱 WAS V8.5)。WebSphere Liberty Profile Server(簡稱 Liberty)是 WAS V8.5 中最主要的新特性,它是一個基于 OSGi 內核,高模塊化,高動態性的輕量級 WebSphere 應用服務器,其安裝極為簡單(解壓即可)、啟動非常快、占用很少的磁盤和內存空間,支持 Web、mobile 和 OSGi 應用的開發,旨在提高開發人員的生產效率。

    在本文中,我們將詳細介紹什么是 Liberty 以及如何使用 Liberty 快速的開發和部署應用,使讀者迅速的掌握這一全新的輕量級應用服務器。

    0 評論:

    朱 修磊, 軟件工程師, IBM

    2012 年 7 月 19 日

    • +內容

    什么是 WebSphere Liberty Profile Server ?

    Liberty 是一款全新的輕量級應用服務器,它將用戶的良好開發體驗作為最主要的出發點。其主要特點和內容包括:

    • 高 模塊化——該功能允許用戶根據自己應用程序的需求啟用或者禁用相關的 feature(所謂 feature,在這里指的是運行應用程序所需要的各種資源的支持。比如,應用程序用到了 JSP,我們就需要啟動 JSP 這個 feature,如果不在需要此 feature,就可以將其禁用。通過這種模塊化的控制,我們可以按需啟動不同的 feature,包括 JSP, Servlet, JPA 等等,這種控制是實現輕量級應用服務器的基礎)。
    • 輕量級—— Liberty 采用了多種技術進行瘦身和優化(主要是 OSGi 的應用),與傳統的 WAS 相比,極大的減少了運行時的內存消耗。
    • 高動態性——由于采用了 OSGi 的架構,程序員在開發的時候,可以動態修改配置文件,應用程序以及服務器的運行時信息,這些修改都是實時生效的,不需要重啟服務器。
    • 快速——由于采用了高模塊化的設計,Liberty 應用服務器會“按需啟動”,自身消耗的系統資源很少,對執行任務的反應時間也非常短,例如,一般來說 Liberty 的啟動時間小于 5 秒。
    • 配置簡單——在整個開發過程中,用戶只需要和一個配置文件(server.xml)打交道,而且配置的使用也非常靈活。

    盡 管 Liberty 與傳統 WAS 相比只是一個“小塊頭”,但是在 Web 和 OSGi 應用程序的開發上,Liberty 與傳統 WAS 完全保持一致,在 Liberty 上開發的程序,可以直接移植到傳統 WAS 上,不需要做任何的改變。相比傳統 WAS 的龐大,Liberty 在為用戶提供良好的開發體驗上遙遙領先。

    作為應用服務器,Liberty 支持與多種開發工具的結合:

    • 支持在 Rational Application Developer 中使用 Liberty,推薦在企業級應用開發中使用這種方式,因為這種方式支持最大范圍的編程模型以及 Cloud。
    • 支 持在 Eclipse 3.6(Helios) 或者 3.7(Indigo) 中使用 Liberty, 需要從 Eclipse Marketplace 安裝 WebSphere Application Server V8.5 Developer Tools for Eclipse 或者 WebSphere Application Server V8.5 Liberty Profile Developer Tools for Eclipse。在 Eclipse 中使用 Liberty 是完全免費的,當然,如果你需要得到 IBM 工程師的支持,則需要支付額外的費用。

    同時,Liberty 服務器也支持多種主流的操作系統平臺,包括 Windows、Linux、Unix、z/OS 以及 Mac OS 等。Liberty 既可以用在開發環境中,也可以用于產品環境(Mac OS 除外)。Liberty 同時支持 Oracle 和 IBM JDK,支持的最低版本分別是:Oracle Java™ 6 update 26 和 IBM Java 6.0 (J9 2.6) SR 1。

    回頁首

    初探 WebSphere Liberty Profile Server

    快速安裝

    在 本文中我們主要介紹 Eclipse 與 Liberty 的結合使用,在開始搭建 Liberty 的開發環境前,讀者需要自行下載和安裝 Oracle 或者 IBM JDK,并配置好環境變量,這是 Liberty 能正常運行的必要條件。如果是以開發為目的,那么使用 Liberty 以及 Liberty 工具是完全免費的,并且沒有時間限制。

    在線安裝 Liberty 開發工具

    打開 Eclipse,依次點擊 Help > Eclipse MarketPlace,在出現的頁面搜索欄里輸入 websphere,并點擊搜索。

    圖 1. 安裝 Liberty 開發工具
    圖 1. 安裝 Liberty 開發工具

    在 搜索結果中會看到如上紅色方框標注的工具,其中 WebSphere Application Server V8.5 Liberty Profile Developer Tools 是 WebSphere Application Server V8.5 Developer Tools 的子集,對于搭建 Liberty 開發環境,直接安裝前者就可以,如果讀者還需要將 Eclipse 與傳統的 WAS 結合使用,那么就需要安裝后一個工具。在本文中,我們直接安裝 WebSphere Application Server V8.5 Liberty Profile Developer Tools。在安裝過程結束后,需要重啟 Eclipse。待 Eclipse 重啟后,選擇 Servers 視圖,右擊新建一個服務器,出現如下圖所示,則表明 Liberty 開發工具已經成功安裝

    圖 2. 驗證 Liberty 開發工具安裝成功
    圖 2. 驗證 Liberty 開發工具安裝成功

    創建 Liberty 服務器

    在安裝好 Liberty 開發工具后,我們需要在 Eclipse 中創建 Liberty 服務器,接著圖 2 所示,選擇 WebSphere Application Server V8.5 Liberty Profile,點擊 Next

    圖 3. 選擇 Liberty 的安裝位置
    圖 3. 選擇 Liberty 的安裝位置

    在 上圖中,我們需要指定 Liberty 服務器的安裝位置,對于如何下載 Liberty 服務器,有兩種選擇:1. 訪問 wasdev.net 站點,下載 Liberty 的安裝文件,Liberty 安裝文件只有不到 50M,下載成功后只需要解壓該文件到磁盤的任何一個位置即可完成 Liberty 的安裝,“解壓即安裝”,安裝 Liberty 就是如此簡單。然后,點擊 Browser 選擇 Liberty 的安裝位置,即可繼續創建 Liberty 服務器;2. 直擊點擊上圖的 Download or install,安裝提示進行操作,只需要幾分鐘就可以在線下載并安裝一個全新的 Liberty 服務器。在這里我們需要指出的是,您也可以選擇直接使用 Liberty 服務器,而不是將其與 Eclipse 搭配起來使用,直接解壓下載的 Liberty 到任意目錄,就可以使用了。點擊 Next,因為 Liberty 默認是沒有創建服務器的,所以可以得到下圖

    圖 4. 空白的 Liberty 服務器
    圖 4. 空白的 Liberty 服務器

    點擊 New,創建你的第一個 Liberty 服務器

    圖 5. 創建 Liberty 服務器
    圖 5. 創建 Liberty 服務器

    為你的 Liberty 任意指定一個名字,點擊 Finish 完成創建。在 Servers 視圖中,我們將看到創建好的 DemoServer。

    圖 6. Liberty 服務器概覽
    圖 6. Liberty 服務器概覽

    從上圖中我們可以看到 DemoServer 是停止狀態,右鍵 DemoServer,選擇 Start 啟動 Liberty 服務器,在 Console 視圖中檢查 log,可以看到 Liberty 已經正常啟動。

    清單 1. Liberty 啟動日志
     Launching DemoServer (wlp-1.0.0.20120428-1251/websphere-kernel_1.0.0)   on Java HotSpot(TM) Client VM, version 1.7.0_01-b08 (en_US)   [AUDIT   ] CWWKE0001I: The server DemoServer has been launched.   [AUDIT   ] CWWKZ0058I: Monitoring dropins for applications.   [AUDIT   ] CWWKF0011I: The server DemoServer is ready to run a smarter planet.

    在上圖中,雙擊 Server Configuration,可以看到如下配置文件(server.xml)。

    清單 2. 初始的 server.xml 文件
     <server description="new server">       <!-- Enable features -->      <featureManager>          <feature>jsp-2.2</feature>      </featureManager>       <httpEndpoint id="defaultHttpEndpoint"                   host="localhost"                   httpPort="9080"                   httpsPort="9443" />    </server>

    這個 server.xml 就是 Liberty 服務器中唯一的配置文件,我們在開發過程中對應用程序或者 Liberty 運行時的配置都是在這個文件中完成。在默認情況下,Liberty 已經啟用了 JSP 功能,我們可以動態的根據應用的需求為 Liberty 增加各種功能支持,方法如下:

    在 server.xml 編輯窗口下方,選擇 Design 模式,

    圖 7. 圖形化編輯配置文件
    圖 7. 圖形化編輯配置文件

    選擇左側 Feature Manager,然后選擇右側 Add,出現下圖列表,根據需要添加相應的功能支持。

    圖 8. Features 列表
    圖 8. Features 列表

    當 然,讀者也可以直接手工編輯 server.xml,手動添加需要的 Feature,但是要注意遵循 Liberty 配置文件的編寫規范。到此,我們已經成功的安裝了 Liberty 服務器,并搭建好了 Liberty 服務器的開發環境。開始我們的例子程序之前,下文首先向讀者更深層次的介紹 Liberty 的功能特性。

    簡化服務器配置

    在 Liberty 中,和用戶打交道的只有一個配置文件 server.xml。關于應用程序或者服務器運行時的所有配置都是在這一個文件中完成的,簡化了服務器的配置,也減輕了程序員的負擔。我們可以在 Eclipse 中直接編輯該文件,修改內容會實時生效。這個配置文件是可以被導出,也可以被不同的服務器共享。

    靈活的服務器配置

    圖 9. 靈活配置
    圖 9. 靈活配置

    對 于配置文件的使用是非常靈活的,例如:如果有很多個 Liberty 都需要用到同一個配置文件,那么可以將該文件單獨導出,存放在一個共享的位置,單個的 Liberty 服務器可以利用 <incluse /> 屬性導入共享的配置文件;又比如配置文件的內容非常多而且繁雜,我們就可以將其中的內容分別寫在不同的配置文件中(稱為不同的配置文件片段),同樣利用 <include /> 將這些片段文件導入到主配置文件中,運行時會負責去實時的解析這些片段文件。

    應用部署

    在 Liberty 中部署應用也是非常簡單的事情,打開你的 Liberty 安裝目錄 <Liberty_Install_dir>\usr\servers\server_name ,可以看到如下目錄結構 :

    圖 10. 應用部署目錄
    圖 10. 應用部署目錄

    在 上圖中 apps 和 dropins 是兩個存放安裝的應用的文件夾,我們可以通過 Eclipse 部署應用到 Liberty,應用文件將被放在 apps 下面(這個是應用部署的默認目錄,也可以通過配置,將應用文件部署到其他任何位置)。我們也可以直接拷貝應用程序(例如 war 文件)到 dropins 目錄,當 Liberty 啟動的時候,就會自動掃描上面的兩個文件夾,然后啟動文件夾內的應用程序。當然,啟動應用前,要確保已經配置好 server.xml 里的相關信息。

    動態加載模塊

    圖 11. 動態化加載
    圖 11. 動態化加載

    與 傳統 WAS 不同的是,Liberty 并不是一個靜態的服務器,它是動態的,可以根據應用程序的需要動態加載相應的模塊。這些模塊是以“feature”來定義的,比如 JSP, Servlet 等,都是不同的 feature。可以將 feature 看作是一個獨立的模塊,它由一到多個 OSGi bundle 組成,共同來完成某一個特定的任務。這些 feature 可是隨時被添加和移除,而不需要重啟服務器,正是得益于這樣的動態化設計,Liberty 無論在啟動時間還是反應時間上都更勝一籌,為程序員帶來了快速的開發體驗。

    運行時動態更新

    圖 12. 動態更新
    圖 12. 動態更新

    Liberty 為我們提供了一個可以動態實時更新的運行時,無論你是修改了應用程序,還是修改配置文件都會實時的被 Liberty 檢測到,并立即更新運行時到最新狀態,無需重啟 Liberty 服務器。新的 feature 可以被隨時的添加到 server.xml 中,運行時為負責實時啟動相應的功能模塊,這一切都與程序員來說都是透明的。例如:我們首先啟動 Liberty 服務器,然后將一個 JSP 應用放到 dropins 目錄里,如果你沒有在 server.xml 中啟動 JSP 功能,那么該應用就不會被啟動。你將會得到一個警告信息,提示你應該首先啟用 JSP 功能,然后該應用才會被實時的啟動。同樣,如果你將 JSP 功能從 server.xml 中移除,該應用也會被立刻停止。

    新型的軟件部署方式

    圖 13. 集中管理 Liberty 服務器
    圖 13. 集中管理 Liberty 服務器

    當 我們使用 Liberty 開發完應用程序后,Liberty 為我們提供了一個全新的軟件部署方式,我們可以將 Liberty 服務器和應用程序一起打包為 ZIP 文件,然后將這個 ZIP 傳輸到需要部署軟件的服務器上直接解壓即可。為了支持適合云端和大規模應用的部署,WebSpere(傳統 WAS)還提供了集中管理部署的功能(需要安裝 WAS ND 版本),使用該功能可以將我們事先打好的 ZIP 包遠程的傳輸到多個服務器上,在傳送完成后,WAS 還會負責解壓和安裝。另外,WAS 的集中管理功能還提供了遠程啟動、停止和卸載 Liberty 服務器的功能。

    Liberty 之于開發人員

    對于開發人員來說,Liberty 的出現是一個十分振奮人心的消息。首先,Liberty 作為一個輕量級的應用服務器,和 Eclipse 可以完美的結合,其最重要的特性就是關注程序員的開發體驗,包括快速的下載、安裝和環境搭建,在開發過程中,實時的應用更新而無需重啟服務器,這些都會極 大的提高程序員的開發效率;其次,在開發,測試和部署應用的過程中,Liberty 都極其友好和方便,其與傳統 WAS 的完全兼容,也為應用程序的遷移提供了有力的保障。

    回頁首

    與主流 WEB 容器的對比

    從某種程度上來講,目前,Liberty 與 Tomcat 處在同一個產品層次上,我們從功能特性、使用體驗以及標準支持上對這兩個服務器進行了對比,從中,我們可以看出 Liberty 在輕量級服務器中所具有的獨特優勢:

    表 1. Liberty VS Tomcat
    對比項TomcatLiberty
    大小<30M<50M
    啟動速度<5s<5s
    Java EE 標準支持JSP 2.2, Servlet 3.0, JSTL 1.2 用戶需要添加相關的 jar 包來實現對其它標準的支持JSP 2.2, Servlet 3.0, JSF 2.0, JSTL 1.2, JPA 2.0, JDBC 4.0, JAX-RS 1.0, JNDI 1.0, Bean Validation 1.0, SSL 1.0, Security 1.0, Web Security 1.0, JMX 1.0 可動態加載或卸載對應的 feature
    OSGi 編程模型是,支持 Blue Print 1.0, WAB 1.0
    開發工具支持 Eclipse支持 eclipse, IBM Rational Application Developer
    支持的操作系統Linux, WindowsLinux, Windows, AIX, Mac, HP-UX, Solaris, iSeries, zSeries
    性能一般與傳統 WAS 具有相同的核心代碼,性能好
    應用程序熱部署支持支持
    配置文件多個配置文件,更新后需重啟服務器一個配置文件,更新后及時生效,無需重啟
    可移植性您可以利用 IBM Application Migration Toolkit 將 Tomcat 上開發的應用快速移植到 WebSphere 應用服務器。反之,則不然。Liberty 和傳統 WAS 對編程模型和標準的支持一致。在 Liberty 上開發的應用可以直接運行在傳統 WAS 之上
    文檔官方文檔涵蓋內容有限,但網絡上相關內容(包括:blog,技術文章等)廣泛。http://wasdev.net 上提供下載地址、文檔、視頻、音頻、樣本引用等。還有 WAS 的信息中心也有大量文檔可供參考閱讀。
    社區http://tomcat.apache.org 有 dev 和 user mailing list,沒有官方支持,有時回復不夠及時。http://wasdev.net,可以與開發人員直接交流
    長期戰略優勢一般用于開發環境,生產環產能用的比較少。支持的并發度不高,可擴展性不強。 Liberty 與傳統 WAS 共享同一代碼,天生具有其高效穩定的特點。開發 - 測試 - 生產切換零代價。可擴展性高,支持多個 server 間的負載均衡和故障恢復。

    回頁首

    Demo:使用 Eclipse 和 Liberty 開發 Web 應用

    通 過上面的介紹,相信大家對 Liberty 已經有了一個大概的認識,接下來我們通過一個 Demo 來向大家展示如何使用 Liberty 和 Eclipse 開發 Web 應用。開始 Demo 之前,請大家根據上文的介紹,搭建自己的 Liberty 開發環境,并安裝好 JDK 并且配置好環境變量。

    Demo 程序很簡單,包含一個 Servlet,實現打印當前時間的功能。步驟如下:

    1. 打開 Eclipse,選擇 File > New > Web>Dynamic Web Project
    2. 設置如下屬性值:
      1. Project name: Demo
      2. Target runtime: WebSphere Application Server V8.5 Liberty Profile
      圖 14. 創建動態 Web 工程
      圖 14. 創建動態 Web 工程
    3. 點擊 Next 兩次,然后點擊 Finish,完成工程的創建。

      此時,你可以在左側的資源導航頁面看到剛剛創建完成的 Demo 工程,展開工程就可以看到一些默認創建的資源。

    4. 右擊 Src 目錄,選擇 New > Class
    5. 設置如下屬性值:
      1. Package: com.date.demo
      2. Name: DateProvider
      圖 15. 創建 java 文件
      圖 15. 創建 java 文件
    6. 點擊 Finish
    7. 編輯如下代碼到 DateProvider.java
      清單 3. DateProvider.java
       package com.date.demo;    import java.util.Date;    public class DateProvider {    public String getDate() {   // TODO Auto-generated method stub   return new Date().toString();   }   }

      該文件只包含一個方法,getDate() 用來獲得當前時間。

    8. 右擊 Src,選擇 New > Servlet
    9. 設置如下屬性值
      1. Java package: com.date.demo
      2. Class name: DatePrintServlet
      圖 16. 創建 Servlet 文件
      圖 16. 創建 Servlet 文件
    10. 點擊 Finish,完成創建。
    11. 編輯如下內容到 DatePrintServlet.java
      清單 4. DatePrintServlet.java
       package com.date.demo;    import java.io.IOException;   import javax.servlet.ServletException;   import javax.servlet.annotation.WebServlet;   import javax.servlet.http.HttpServlet;   import javax.servlet.http.HttpServletRequest;   import javax.servlet.http.HttpServletResponse;    /**   * Servlet implementation class DatePrintServlet   */   @WebServlet("/DatePrintServlet")   public class DatePrintServlet extends HttpServlet {   private static final long serialVersionUID = 1L;            /**       * @see HttpServlet#HttpServlet()       */      public DatePrintServlet() {          super();          // TODO Auto-generated constructor stub      }   /**   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)   */   protected void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {   // TODO Auto-generated method stub   DateProvider dateProvider=new DateProvider();   response.getWriter().println(dateProvider.getDate());   }    /**   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)   */   protected void doPost(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {   // TODO Auto-generated method stub   }    }
    12. 在左側導航欄選擇 DatePrintServlet,點擊右鍵 Run As > Run on Server , 如下圖:
      圖 17. 選擇 Liberty 服務器
      圖 17. 選擇 Liberty 服務器
    13. 點擊 Finish,Liberty 開發工具將會為我們部署上面的 Demo 程序,并啟動 Liberty 服務器。從 console 的日志里我們可以看到如下描述:

    [AUDIT ] CWWKZ0001I: Application Demo started in 1.235 seconds.

    表明 Demo 應用已經成功部署了,同時,在 Eclipse 自帶的瀏覽器里可以看到如下頁面信息:

    圖 18. Demo 運行頁面
    圖 18. Demo 運行頁面

    讓我們回過頭來看看 server.xml 里面的內容:

    清單 5. server.xml
     <server description="new server">       <!-- Enable features -->      <featureManager>          <feature>jsp-2.2</feature>          <feature>localConnector-1.0</feature>       </featureManager>       <httpEndpoint host="localhost" httpPort="9080" httpsPort="9443"      id="defaultHttpEndpoint"/>       <applicationMonitor updateTrigger="mbean"/>       <application id="Demo" location="Demo.war" name="Demo" type="war"/>   </server>

    其中:

    <feature /> 包含了應用程序中所用到的功能包,如果你啟用了 jsp-2.2,那么 Liberty 默認支持對 Servlet 3.0。

    <httpEndpoint /> 指定了 HTTP 訪問的端口,我們可以在這里改變默認的端口。

    <applicationMonitor /> 用來配置對應用程序的監控模式,updateTrigger 屬性是用來控制動態更新的,通過 Liberty 工具部署應用時 updateTrigger 的值設置為 mbean,當我們直接把應用程序拖進 dropins 時,需要將 updateTrigger 設為 polled,當然,如果我們不需要應用的動態更新功能,可以將這個值設為 disabled.

    <application /> 用來指定和應用本身相關的屬性,id 和 name 是應用的唯一標識,type 指定了應用的類型,location 指定應用所在的位置,默認是在 apps 目錄里面,我們可以通過配置修改這個默認設置。

    回頁首

    總結

    通 過上面的介紹,相信讀者已經對 WAS V8.5 最重要的特性 Liberty 有了一個全面的認識,作為新一代輕量級應用服務器,Liberty 采用了和傳統 WAS 相同的代碼,繼承了傳統 WAS 的優點,無論在性能上還是在穩定性上都優越于其他同類產品。Liberty 無論是在開發環境中還是在產品環境中,都具有其他產品不可比擬的優勢。我們有理由相信,在追求開發效率和軟件質量的今天,每一個程序員都會很快的接受這個 WAS 家族的“小塊頭”。

    參考資料

    學習

    獲得產品和技術

    討論

    主站蜘蛛池模板: 久久精品免费一区二区| 99re6在线精品免费观看| 国产成人久久精品亚洲小说| 免费精品国产自产拍在线观看| 一区二区三区在线免费| 久久久久国产精品免费网站| 黄色成人免费网站| 国产精品国产午夜免费福利看| 亚洲真人日本在线| 亚洲色图校园春色| 亚洲AV成人无码网站| 福利免费在线观看| 18国产精品白浆在线观看免费| 国产成人免费ā片在线观看| 亚洲五月综合缴情在线观看| 91亚洲精品自在在线观看| 成人亚洲国产精品久久| 97无码人妻福利免费公开在线视频 | 91精品免费在线观看| 国产一卡二卡≡卡四卡免费乱码| 亚洲色婷婷六月亚洲婷婷6月| 久久精品国产亚洲av影院| 亚洲乱码日产精品一二三| 久青草视频97国内免费影视| 无码区日韩特区永久免费系列| 亚洲AⅤ优女AV综合久久久| 久久亚洲AV成人无码国产| WWW国产亚洲精品久久麻豆| 暖暖日本免费中文字幕| 日本免费的一级v一片| 无码欧精品亚洲日韩一区| 亚洲国产成人久久综合| 日本三级在线观看免费| 香蕉高清免费永久在线视频| 亚洲AV永久无码区成人网站 | 亚洲精品无码久久久久秋霞 | 最新欧洲大片免费在线| 亚洲一区二区三区在线播放| 亚洲日本久久一区二区va| 中文在线免费看视频| 操美女视频免费网站|