摘要:利用Eclipse插件的可擴展機制開發(fā)了JTang-Eclipse插件。JTang-Eclipse插件是一個將JTang服務器集成到Eclipse上的工具,遵循Eclipse插件開發(fā)平臺提供的框架,支持服務器生命周期管理,可以在JTang上部署J2EE archive包,并提供打包、部署描述符自動生成和JSP編譯等輔助J2EE開發(fā)的功能。
關鍵詞:Eclipse;插件;J2EE;PDE;API;JTang
0 引言
Eclipse是一個開放的、通用的、可擴展的集成開發(fā)環(huán)境,它為創(chuàng)建可擴展的集成開發(fā)環(huán)境提供了一個開放源碼的平臺Ⅲ。這個平臺允許任何人構建與環(huán)境和其它工具無縫集成的工具。JTang-Eclipse插件可以使用戶在Eclipse平臺上方便地進行啟動、關閉JTang服務器,自動生成描述符,將指定對象打包,在服務器上進行動態(tài)部署或取消部署等操作,大大提高了基于JTang應用服務器的開發(fā)效率。
1 基于插件的體系結構與插件的工作原理
1.1體系結構
圖1 Ecfipse體系結構
Eclipse最具特色的地方就是它的插件體系結構,如圖1所示。工具與Eclipse無縫集成的關鍵就是一插件。除小型的運行時內核(Platform Runtime)之外,Eclipse中所有東西都是由插件構成的。一個插件可以聲明許多指定的擴展點和任意個在其它插件中的擴展點的擴展。插件的擴展點也能夠被其它的插件擴展。工作區(qū)(Workspace)和工作臺(Workbench)是Eclipse平臺的兩個必備的插件——它們給大多數(shù)插件提供了擴展點,也就是接口。Workspace是負責管理用戶資源的插件:包括用戶創(chuàng)建的項目和項目中的文件等。Workbench為Eclipse提供用戶界面,它為添加用戶界面和組件提供了擴展點,同時也提供了SWT和JFace。SWT是Java的Swing/AWT GU lAP I的非標準替代者,JFace則建立在SWT基礎上,包括圖像、工具箱、字體對話框、參數(shù)選擇、向導框架、進度條等,幫助系統(tǒng)定義插件擴展點,提供一個附加的導航結構,允許工具以HTML文件的形式添加文檔??傊贓clipse平臺上,可以以插件的形式開發(fā)出各種功能構件并集成到Eclipse平臺中,下面介紹的JTang-Eclipse插件就是如此。
1.2插件的工作原理
Eclipse系統(tǒng)啟動時,其運行時內核會啟動平臺的基礎部分查找所有可用的插件,讀取其插件的聲明文件——Manifest,并在內存中構建一個插件注冊表。在Eclipse啟動后,其他任意插件都不能添加進來。
每個插件都有一個名為plugin.xml的Manifest文件,聲明了它同其它插件的互連關系。一個擴展點可以聲明在擴展中使用的附加的xml元素類型,它允許提供擴展點的插件與聲明擴展點的插件相互交流信息。此外,Manifest文件不需要激活提供擴展的插件或者裝載任意代碼,它可以從插件注冊表獲得。這個屬性是相當關鍵的,特別是對于支持大量插件的安裝,但是這種情況僅在用戶會話中需要。使用基于xml插件的Manifest也能更容易地開發(fā)支持創(chuàng)建插件的工具,PDE(Plug-InDevelopment Environment)就是其中一個實例。
2 JTang-Eclipse插件的體系結構及其功能模塊
可插拔的Eclipse提供的插件運行環(huán)境使得插件的安裝和卸載十分方便。它具有可擴展、各模塊功能相對獨立等特性,未來要添加功能只要加入相應的模塊即可。
JTang-Eclipse插件正是利用Eclipse插件開發(fā)環(huán)境提供的擴展點和API的這些特性,通過擴展其擴展點而實現(xiàn)其強大功能的。其插件的體系結構如圖2所示。
圖2 JTang-Eclipse插件的體系結構
JTang-Eclipse插件為JTang服務器提供了以下接口:J2EE、Xdoclet、Packaging、Deployer、Launcher。相應地分為五個功能模塊。
服務器生命周期管理提供配置缺省服務器的preference頁面,在Eclipse界面中快速啟動、關閉和停止JTang應用服務器,提供生命周期管理的參數(shù)配置及存放功能。服務器啟動配置中需要JTang服務器的代碼路徑以啟動服務器。
J2EE提供EJB組件和Web組件等J2EE相關項的生成向導、部署描述符的自動生成、WebServices的生成向導、JSP編輯器、xml編輯器等功能的模塊。
XDoclet提供生成描述符的preferences配置頁面,對于給定的EJB、Servlet,可以根據(jù)preferences配置的任務及其設置的相關屬性值,自動生成部署描述符及其他的相關文件。生成部署描述符時首先需要得到JTang特有的部署描述符的dtd文件。
打包提供打包的preferences配置頁面,根據(jù)用戶preferences的配置,把用戶指定的文件、文件夾打到archive文件中。
部署提供部署路徑設置的preference頁面和查看資源是否已被部署以及被部署到部署路徑的property頁面。實現(xiàn)將archive文件放到指定的部署路徑下、將改動過的archive文件重新放到原部署路徑下、將archive文件從部署路徑下刪除的功能,等待掃描后被deploy、redeploy或者undeploy。本插件在部署時只是將要部署的archive文件復制到部署路徑,反部署時是將要撤銷部署archive文件從部署路徑刪除。然后由JTang服務器的kernel模塊來掃描部署路徑并進行真正的部署或撤銷部署。所以這里在Eclipse界面上進行的deploy、redeploy或者undeploy都需要kernel模塊的配合才能完成。部署和服務器啟動子模塊相對于工程屬性擁有影響全局的屬性,這些preferences的配置在windows-preference頁面進行。
利用插件的可擴展機制開發(fā)的JTang-Eclipse插件系統(tǒng)具有如下特性:
易用性JTang-Eclipse插件提供了屬性設置和功能使用的圖形界面,使用方便,界面風格統(tǒng)一。
擴展性各功能模塊之間相對獨立,新的功能模塊可以輕松地添加到現(xiàn)有地體系中而無需對已有模塊做較大的修改。
便利性提供大量輔助性功能,如自動生成部署描述符,自動進行JSP編譯等,用戶只需進行簡單的配置。
安裝卸載方便安裝卸載只需在特定的目錄下做簡單的拷貝和刪除,不會對系統(tǒng)其他部分造成影響,系統(tǒng)的穩(wěn)定性得以增強。
3 結束語
Eclipse是功能強大的開發(fā)平臺,它的PDE(PluginDevelopment Environment)為用戶提供的了一系列擴展點。JTang-Eclipse插件通過擴展這些擴展點將JTang服務器集成到Eclipse平臺上,各模塊獨立實現(xiàn)自己的功能,為高效地進行開發(fā)提供了有力的工具。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。