Java平臺,可擴充套件GlassFish v3的JavaEE 6

ouhennb發表於2009-06-14
Java平臺——具備可擴充套件GlassFish應用伺服器v3的JavaEE6的架構師Jerome Dochez和工程師Mahesh Kannan詳細介紹了即將推出的GlassFish v3,該產品現在可作為預覽版下載。
  對於那些過去四年裡一直處於沉睡狀態的人來說,GlassFish是由Sun公司贊助開發的JavaEE開源應用伺服器。GlassFish v3是對v2版本的主要效能的重新詮釋。它操作簡單,具有基於OSGi的可擴充套件核心,帶有一個網頁和指令碼容器以及一個用於配置和管理的控制檯。你可以在來自NetBeans 6.7的GlassFish v3上進行開發和部署。GlassFish v3應用伺服器與JavaEE6一道組成了伺服器端Java平臺的基石。

  GlassFish是JavaEE引用執行,Douchez一開始就解釋了JavaEE 6的效能怎樣一步步引導他們走向了GlassFish。

  配置檔案

  配置檔案主要是有關JavaEE技術中最重要開發效能的內容。第一類就是Web Profile。未來的配置檔案將在Java Community Process中定義。目的是推動同類程式設計師的工作效率——也就是說提高使用服務應用內部註釋的能力而不是編寫複雜的XML檔案。

  由於GlassFish是引用型執行,它必須用JavaEE 6為不同的配置檔案提供不同版本的GlassFish。這種制約增加了為GlassFish3採用模組化結構的傾向。

  簡化開發

  業界一直關注如何通過JavaEE簡化開發過程。JavaEE 6通過使用所有網路API,減少或消除部署描述符的需求,允許第三方庫自主註冊,簡化資料包,提供用於RESTful網路服務的JAX-RS以及從整合各個技術這幾個方面來解決大家在開發方面的顧慮。

  嵌入性

  你可以使用簡單的EJB容器作為JavaEE 6應用內部的嵌入式容器。此外整個GlassFish v3應用都是可嵌入的,因此我們可以通過其API啟動或停止GlassFish。

  GlassFish v3向所有的Java虛擬機器技術開放,特別是JRuby/Rails。Ruby程式設計師的一個優勢在於他們不需要將Ruby應用部署成WAR File。相反,GlassFish v3可以直接援引JRuby註釋並在無需修改的情況下,本地部署Rails應用。除了具備多個執行時的部署選項以外,GlassFish v3還提供JRuby執行時池的動態調整。因此,GlassFish能在高負荷的時候執行良好,而在低負荷的時候能以最少的資源消耗執行。

  有了這個新版本,你就可以通過其API擴充套件GlassFish的功能,並通過Admin 控制檯釋出這些功能。此外,你還可以以動態的方式向平臺新增功能而不需要重啟。擴充套件性可以通過API來獲得,它可以替代或擴充套件效能。OSGi也提供了能用來擴充套件OSGi執行時的擴充套件效能。

  GlassFish v3中模組化設計的一個方面就是基於服務的架構。服務由協議定義,協議的執行相對而言容易一些。基於服務的架構也允許基於使用模式的延遲載入。

  模組性

  為GlassFish v3擴充套件功能要求有新的,模組化的架構。GlassFish v3的模組化效能基於OSGi。OSGi基於服務的架構使得這些元件可以動態發現彼此並進行協作。新架構的微核心是很小的。因此GlassFish v3是輕量級的部署平臺,它可以快速被啟動且佔用的資源很少,因為它會使用延遲載入來啟動那些僅僅被要求使用的服務。例如,如果你的應用不使用EJB容器,它就不會被載入。

  許多小模組可以被視為大量的機動部件,而GlassFish v3按照170束的量傳輸。即便是擁有這樣數量的模組,GlassFish的啟動也是很快的。技術人員希望能將數量從170減少到100。

  開發專案的時候需要強大的建立工具,這主要考慮到傳輸的複雜性。GlassFish團隊使用的是Maven來簡化建立過程,該工具是Apache用於Java專案的建立管理器。

  嵌入式API

  GlassFish v3具備嵌入式API,可以用它們來啟動和配置應用伺服器。這意味著你可以用Java平臺,JavaSE應用來啟動和停止GlassFish容器。開發團隊對GlassFish應用進行測試的時候,他們使用的是Maven中的技巧,Maven本身就是一個JavaSE應用。可以用Maven製造一個GlassFish v3外掛來進行測試。

執行時

  170個GlassFish v3資料包被分成三種型別:核心,服務和容器。核心提供了 啟動/關機 序列,以及基本服務,如部署和配置讀取等。核心資料包組成了中心分佈:最不可能出現的GlassFish分佈。它沒有容器,也沒有任何執行程式的能力,所佔空間約3M大小。

  核心資料包上的是服務資料包,它們能提供垮容器的功能,如安全性,命名管理器和Admin控制檯。

  容器資料包在位於前兩者之上。容器資料包提供了獨立的容器,這些容器可以控制使用者程式。例如,Web容器可以執行Web程式,EJB容器可以執行EJB程式。獨立的容器對於執行配置檔案很重要,後者可以單獨指定不同數量的容器。粘接程式碼用於容器,核心,OSGi和基本服務間的相互聯絡。

  根據所部署程式的不同要求,GlassFish v3可以確定所要求的容器是哪一個,還可以自動啟動這些容器。每個容器都有自己的配置,這些配置儲存在中心配置檔案中。組織好中央配置檔案的配置資料能簡化執行過程。應用程式容器能夠接受來自命令列或REST呼叫的命令。

  基於服務的架構

  用來分配GlassFish的模組只是一些能指定輸入和輸出內容的Jar檔案。作為一名程式設計師,你的主要編碼責任就是程式服務,它可以分為兩類:OSGi和HK2。HK2概括了OSGi API,且提供了OSGi所沒有的服務。

  為了建立一個HK2服務,你要依照@Contract說明進行陳述,並依照@Service 說明進行執行。建立系統會自動生成後設資料。不要求使用複雜的XML檔案。

  服務查詢

  服務查詢是依賴驅動型,可以生成自動級聯。請求一個服務或許會導致該服務要求貢獻服務,依此類推。如果你擁有不能管理的物件,你可以使用API,用名稱查詢服務,使用雜湊表格方法。

  應用容器執行時

  配有粘接程式碼的核心元件接受Deployment,Configuration,Grizzly,Monitoring和Admin GUI連線。一個容器必須提供匹配的粘接程式碼。核心或容器都不需要對彼此內部情況有所瞭解。它們通過服務協議來進行互動。你可以用四個介面編寫粘接程式碼:Sniffer,用來識別應用;Container;Deployer;Application Container。

  配置

  所有的配置介面都由單獨的類執行。這個類使用註釋來建立集中的XML配置檔案。配置自動聚集用於配置資料的支援,Mbeans生成,REST介面以及訪問轉變資料的處理。雖然GlassFish v3似乎是由零碎的部件組成,但其實它是一個很好的整合產品。

  REST

  你可以使用JAX-RS來提供用於配置資料,命令呼叫和監控的REST介面。你甚至可以使用REST客戶作為管理控制檯的替代物。  

  監控

  GlassFish v3中的監控是以探測為基礎的。探測由每個模組定義,且會預設關閉以節約開支。探測是動態啟用的。當監控者註冊時,探測執行會進行動態重寫以啟動觸發事件。

  這一策略執行的是輕量級執行,因為只有需要的才會被啟用。探測策略使用Btrace,因此可以實現所有平臺的監控。但是GlassFish v3是DTrace 啟用的,只要用於Solaris作業系統。模組定義了探測點,而且有了開放的API後,任意模組都可以定義探測點。

相關文章