[转载]通过插件支持,Geronimo 提供了 one-click 升级
通過插件支持,Geronimo 提供了 one-click 升級
安裝和創建插件的能力是 Apache Geronimo 1.1 中最被期待的新特性。插件為 Geronimo 用戶提供了即時更新功能。因而,您現在能夠下載新的應用程序和服務程序并讓它們很快就在 Geronimo 服務器上運行。本文向您介紹如何查找、安裝甚至自己創建 Geronimo 插件。
在出現插件之前,新的服務程序或應用程序特性的安裝需要 Geronimo 專門構建的下載包,或者要求進行 Geronimo 模塊的手工部署和配置。插件通過啟用插件供應者,將部署和配置以適合運行的格式與模塊打包在一起,從而簡化了安裝過程。新的服務器特性和應用程序能夠通過 簡單的下載和安裝添加到服務器中。
Geronimo 廚房
做為 Geronimo 用戶,您已經熟悉了它的模塊;它們是部署在服務器中的 WAR、EAR、RAR 和 JAR 文件。為了部署這些文件,需要 Java? 2 平臺,Enterprise Edition (J2EE) 部署描述符(例如,用于 Web 應用程序的 web.xml),經常還需要 Geronimo 特有的部署計劃(例如,用于 Web 應用程序的 geronimo-web.xml)。部署描述符和部署計劃指示 Geronimo 如何配置要部署的模塊。
根據模塊類型,Geronimo 在后臺調用不同的專用構建器 組件來處理部署計劃并配置和啟動模塊。(要獲得更多信息,請參閱 “Geronimo!第 1 部分: 支持 J2EE 1.4 引擎” [developerWorks,2005 年 5 月])。例如,Enterprise JavaBeans(EJB)構建器專門負責處理 EJB 模塊。作一個比喻,部署描述符和部署計劃是烹飪方法,構建器就是廚師;您提供烹飪方法,而廚師迅速做好一個可口的模塊。
然后,插件僅僅是準備好運行的 “經過加工的” Geronimo 模塊。
模塊成功地部署和啟動后,它的配置(按照部署計劃中的說明)以二進制形式存儲在存儲庫里。在這種情況下,存儲庫擔當配置存儲器,如 圖 1 所示。
圖 1. Geronimo 插件是一個經過加工的模塊
在 圖 1 中,Module 1 和 Module 2 都被成功地部署到 Geronimo 服務器 A 中。在內部,Geronimo 利用這些模塊的配置信息管理每個模塊。插件機制允許把預先部署的模塊作為經過加工的包導出。
即時模塊烹飪
使用 Geronimo 提取經過加工的模塊來創建插件,這些插件馬上可以在配置類似的 Geronimo 服務器實例中重新安裝和啟動。圖 2 舉例說明了這種提取。
圖 2. 導出和安裝一個插件
在 圖 2中, Module 1 和 Module 2 都被部署在 Geronimo A 中。它們都被作為插件導出(提取)到一個公用的插件存儲庫中。另一個配置類似的 Geronimo 服務器 Geronimo B 查找和安裝 Module 2 插件。Geronimo B 能夠在沒有其他配置的情況下啟動和運行 Module 2。
為了達到安裝和啟動狀態,一個插件包通常包括:
- 模塊的二進制文件。
- 用于模塊的二進制形式的配置信息。
- 一個描述符,geronimo-plugin.xml,它提供元數據并指示容器如何安裝插件。
因為插件中模塊上的部署和配置工作已經完成,所以一旦安裝它就可以運行了。
依賴項和先決條件
插件的好處之一是顯而易見的:您不用自己動手就能夠獲得專家級的配置。
插件安裝程序的工作遠遠不只是部署模塊,因為插件可能會依賴于其他模塊。在 geronimo-plugin.xml 文件中的依賴項被提供給插件安裝程序。安裝程序應該在某些存儲庫中查詢它們,這些存儲庫的列表也會和這些依賴項一起包含在 geronimo-plugon.xml 中。
安裝程序在啟動插件前下載這些依賴項。
插件可能還包括一個先決條件列表。用戶必須在安裝插件以前在服務器上預先安裝先決軟件。任何沒有滿足的先決條件都將終止插件的安裝,因為插件安裝程序不能自動安裝先決軟件。
當創建一個插件時,可以選擇在插件發布包中包含依賴項 JAR 文件,也可以把它放在插件外部并單獨下載。包含依賴項 JAR 可以確保它們被插件利用,但是使得發布文件變大。把它放在插件外部可以保持發布文件比較小,并能夠從服務器中運行的其他模塊中共享依賴項 JAR。然而,把依賴項放在外部意味著存在一個小的風險:依賴項可能無法下載,因此插件不能啟動。
環境需求
為了利用插件的安裝并運行的好處,創建插件的環境和安裝插件的環境必須是相似的。這些相似性需求可能包括以下細節:
- 匹配的 Geronimo 服務器版本
- Web 容器風格 —— Tomcat 或者 Jetty
- 運行 Geronimo 實例的 Java Virtual Machine(JVM)層
- 外部配置的 J2EE 資源的可用性,例如,共享的 Java 數據庫連接(JDBC)庫
- 如果模塊或依賴項依賴于外部網絡端點 —— 比方說,一個關系數據庫管理系統(RDBMS)服務器,這些端點也必須可以從安裝服務器訪問。
通常,插件元數據中的先決條件指出了這些需求。如果您依賴特殊的 VM 版本或服務器配置來創建非常特殊的插件發布給廣泛的用戶(例如,互聯網上應用程序的發布),那么這些需求可能會有一點點限制。在這些情況下,元數據包含在 插件的 META-INF/geronimo-plugin.xml 文件中,它們能夠確保正確配置的系統才會安裝插件。
在一個企業中配置多個 Geronimo 實例
當插件都在一個企業中使用時,相似服務器的需求只是一個較次要的問題。在一個企業的受控環境中,通常有許多配置相似的系統,并能夠使用插件有效地加速重復的部署。
因為插件是預先配置和部署的模塊,所以每個在 Geronimo 服務器中運行的模塊都可以被認為是一個插件。如果需要為一大組 Geronimo 服務器相同地配置應用程序,那么在一臺服務器上保存您需要的所有東西,然后將其他服務器指向這臺服務器,然后其他服務器實例把新模塊當作插件下載和安裝 —— 用中心存儲服務器充任插件存儲庫。這常常被叫作復制。為了實現這些,需要:
請參閱 準備插件存儲庫 中有關復制步驟細節的更多信息。
作為插件的系統模塊
另外一種插件是 Geronimo 系統模塊(或者服務器組件模塊)。Geronimo 系統模塊是向 Geronimo 提供服務器特性的軟件組件。它們可能包含附加的服務器功能,例如,統一描述、發現和集成的 Java 實現(jUDDI)服務器或輕量級目錄訪問協議(LDAP)服務器。
Little-G 和按需服務器匯編
Geronimo 用戶經常遇到關于選擇合適的 Geronimo 服務器配置的難解問題(在 Geronimo 系統開發者行話中,叫做匯編)。 使用 Geronimo 1.1,可以下載完備的包含全部特性的服務器,或者僅有 Web 容器的 Littie-G。如果需要 Web 容器加 Derby RDBMS,那么需要下載完備的服務器。然而,這會導致服務器配置文件過大,在運行時消耗寶貴的磁盤空間和內存資源。
插件與 Little-G 最小服務器發布相結合正好可以解決以上問題。帶插件的 Little-G 向終端用戶提供相同的混合搭配的 Geronimo 服務器配置。這些服務器配置以前只有核心的 Geronimo 貢獻者和系統程序員才有權訪問。有了 Geronimo 插件,您終于能針對自己的具體需要配置足夠的服務器特性,并且不需要無用的特性。
使用 Geronimo 插件
通過對 Geronimo 插件構架概念的理解,您已經準備好利用插件了。以下內容說明了在哪里查找插件和如何安裝并創建插件。
搜索可用插件的存儲庫
要搜索可用的 Geronimo 插件,可以使用兩個工具中的一個:
- 命令行部署器
- Web 控制臺
這些工具都能當作插件安裝程序使用。插件安裝程序執行以下操作:
命令行部署器安裝在 Geronimo 安裝的 bin 子目錄中的 deployer.jar 文件中。在 Geronimo 1.1 中,部署器有一個新的 search-plugins 命令(如下所示)。實際上,它是一個查找和安裝插件的命令,因為它允許安裝在存儲庫中查找到的插件。
deploy search-plugins http://www.geronimoplugins.com/repository/geronimo-1.1/這個命令顯示了可用插件列表,與 圖 3 相似。
圖 3. 使用命令行部署器查找可用插件
要安裝其中一個可用插件,僅需選擇相應插件的編號,部署器會完成其余工作。
作為命令行部署器的替代品,可以通過 Web 控制臺搜索插件。Web 控制臺是一個可以通過 URL http://localhost:8080/console/ 訪問的應用程序。
在左面導航面板中的 Plugins 下,單擊 Create/Install。默認情況下,服務器運行時沒有任何 Geronimo 插件存儲庫信息,如 圖 4 所示。
圖 4. 使用 Web 控制臺處理插件
但是,能夠通過點擊 Update Repository List 鏈接獲得默認存儲庫列表。目前最有效的可訪問存儲庫是 www.geronimoplugins.com。圖 5 顯示最新的可用存儲庫列表。
圖 5. 更新可用插件存儲庫列表
存儲庫列表被填充后,可以選擇一個存儲庫并單擊 Search for Plugins 按鈕來獲得存儲庫中的可用插件列表。
圖 6 顯示在 www.geronimoplugins.com 存儲庫中的可用插件列表。
圖 6. 存儲庫中可用的插件
能夠單擊 圖 6 中的任何一個可用插件,Web 控制臺將下載和安裝這個插件。
安裝 Geronimo 插件
除了從存儲庫獲得插件,還可以把插件當作單獨的 .car 或 .zip 檔案文件下載。當有作為 .zip(或 .car)檔案文件下載的插件時,能夠使用命令行部署器的 install-plugin 命令安裝它們。語法是:
deploy install-plugin例如,如果在 directory-1.1.zip 中有 Apache 目錄服務插件,安裝插件的命令是:
deploy install-plugin directory-1.1.zip這會啟動安裝過程,這個過程涉及許多必須的依賴項的下載和安裝。完成時,控制臺輸出可能與 圖 7 相似。
圖 7. 使用命令行部署器來安裝插件
在 圖 7 中,可以看到目錄服務插件的安裝導致了 18 個其他依賴項模塊(幾乎 5MB 的附加模塊)的自動下載和安裝。插件機制輕而易舉地為您節省了下載和部署的數小時時間,這還不包括配置模塊所花的時間。
安裝之后,Geronimo 插件安裝的模塊與手工部署和配置的模塊是沒有區別的。為了卸載它們,可以以與一般模塊同樣的方式使用 Web 控制臺或者命令行部署器。
下載 一節包含一個企業應用程序插件,可以嘗試把它安裝在您自己的 Geronimo 服務器上。
創建自己的 Geronimo 插件
既然插件是模塊+二進制配置+元數據,在能夠創建插件之前必須首先成功地把模塊部署到服務器實例中。
讓目標插件模塊啟動和運行后,最輕松的創建 Geronimo 插件的方式就是使用 Web 控制臺。可以使用 Create/Install 插件 portlet 的 Export Plugin 特性來完成。
在左面導航面板中的 Plugins 下,單擊 Create/Install。然后,在右面導航面板中,選擇想要放入插件的模塊。如 圖 8 所示,選擇了 dw/bigpetstore/1.1/car 作為創建插件的模塊。
圖 8. 從一個部署的模塊創建插件
下一步,portlet 引導您填寫 geronimo-plugin.xml 中的許多元素。只需回答問題和填寫空白之處。確保指定了成功地部署模塊所需的依賴項。在 dw/bigpetstore/1.1/car 的例子中,EJB 容器 geronimo/openejb/car 是必需的。可以忽略版本來表示依賴項不是版本敏感的。
|
最后,單擊 Export Plugin 按鈕,portlet 將創建一個 car-exportX.X.car 文件。這是 CAR 檔案中的插件。這個文件能被任何兼容的 Geronimo 服務器下載和安裝(請參閱側欄 Geronimo 1.1 插件缺陷 )。
如果使用 jar 工具(jar xvf )釋放 CAR 文件,那么可以看到它由以下組件組成:
- 原模塊的二進制文件。
- 一個 .ser 文件,包含串行化二進制格式的模塊配置(和其他支持文件,例如,hash 和 info 文件)。
- 一個包含元數據的 META-INF/geronimo-plugin.xml 文件,插件安裝程序需要這些元數據。
在創建插件時填寫的信息被用于生成 geronimo-plugin.xml 的內容。也能夠手工創建這個文件和整個 CAR。geronimo-plugin.xml 元數據文件應該包含一個 元素。這個元素的細節如 表 1 所示。
表 1. geronimo-plugin 元素中的插件元數據
| geronimo-plugin | 插件元數據的根元素。它作為一個單獨的 META-INF/geronimo-plugin.xml 文件出現,也可以合并到 geronimo-plugins.xml 中。 |
| name | 插件的名字。基于這個名字選擇插件。 |
| module-id | 插件的 Geronimo 模塊 ID。插件僅僅是預先配置的模塊。如果模塊 ID 沒有被指定,那就意味著安裝一個插件組。插件組就是具有共同先決條件的將被一起安裝的一組插件(每一個插件都是經過加工的模塊)。在這種情況下,< dependencies> 元素應該包括這個組中安裝的插件。 |
| category | 用于標識插件種類的文本名字。這有助于存儲庫進行分類。 |
| description | 插件的文本描述。這里應該告訴用戶關于插件的一切。 |
| url | 鏈接到插件 Web 站點的 URL。例如,如果插件是一個開放源碼項目,那這可能是一個鏈接到開放源碼主站的 URL。 |
| author | 插件的作者(個人、團體、公司等)。 |
| license | 發布軟件所用的軟件許可證。應該包括類型和名字,例如 BSD -- Apache Software License (ASL) 2.0。一定要有 Open Source Initiative(OSI)批準屬性,表示軟件許可證是否是 OSI 批準的。 |
| hash | 用于校驗下載的二進制文件完整性的 hash 碼。類型屬性指出了 hash 算法,例如消息摘要算法 5(MD5)或 安全哈希算法(SHA-1)。 |
| geronimo-version | 需要的 Geronimo 服務器版本。例如,1.1。 |
| jvm-version | 運行這個插件需要的 JVM 版本。 |
| prerequisite | 在可以安裝插件之前,必須預先安裝的模塊的列表。它有助于指定 Tomcat 或 Jetty 容器的先決條件。 子元素和 子元素能進一步指定先決條件是什么并提供說明。 |
| dependency | 本模塊依賴的庫模塊的列表。插件安裝程序嘗試從存儲庫列表下載和安裝這些模塊。 |
| obsoletes | 本模塊替代的模塊名。 |
| source-repository | 一個或更多這些條目指示插件安裝程序從哪里下載插件依賴項。這里指定的次序就是搜索存儲庫的次序。 |
| copy-file | 指定需要復制到 Geronimo 安裝中的附加文件。 |
| config-xml-content | 用于 Geronimo 的 config.xml 文件的內容。config.xml 文件通常包含用于被安裝模塊的配置更改。在網絡連接器模塊上,通常用來更改 TCP 端口、主機名等等。 |
準備插件存儲庫
準備插件存儲庫需要設置帶 Maven 2 存儲庫的 Web 服務器。本文不討論 Maven 2 存儲庫設置的細節。(如果您有興趣設置自己的存儲庫,請參閱 參考資料)。然而,可以把插件創建提交給公用的 Geronimo 插件存儲庫。(請參閱 參考資料)。
除公用的 Geronimo 插件存儲庫之外,如果需要,Geronimo 還可以作為 Maven 2 存儲庫并動態地生成插件元數據。元數據(即 geronimo-plugins.xml 文件的內容)的生成是由 GeronimoAsMavenServlet(存 儲庫)提供的。這個 servlet 使您能夠把 Geronimo 服務器中安裝的組件當作插件公開。這個能力是由控制臺標準程序中的 servlet 實現的。使用 URL http://localhost:8080/console-standard/maven-repo/geronimo-plugins.xml 嘗試生成 geronimo-plugins.xml 文件。
在這里,Web 容器把 /maven-repo/* URL 映射到控制臺標準 Web 應用程序中的 GeronimoAsMavenServlet 類。在默認情況下,控制臺標準 Web 應用程序會在 Geronimo 服務器上安裝和運行。它是標準 Web 控制臺實現的一部分。
前文提到的 Geronimo 服務器復制使用了這種 geronimo-plugins.xml 元數據的自動化生成過程。
如果要復制最近安裝的服務器,則執行 Web 控制臺插件 Portlet,然后選擇中央存儲服務器作為存儲庫,再使用上面的 URL(http://localhost:8080/console-standard/maven-repo/geronimo- plugins.xml)讓中央存儲服務器生成它的配置作為插件列表。
對于 Geronimo 1.1,添加自己的中央存儲服務器的惟一方式是編輯 config.xml 文件(要獲得更多信息,請參閱側欄 Geronimo 1.1 插件缺陷 )。請記住,在編輯 config.xml 文件前必須停止 Geronimo 服務器,因為服務器可能在任何時候編寫它。編輯 var/config 下的 config.xml 文件,使它包含鏈接到主服務器的 GeronimoAsMavenServlet 的 URL。清單 1 突出顯示了要添加的行。
清單 1. 編輯 config.xml 文件
| ... http://people.apache.org/~ammulder/plugin-repository-list-1.1.txt [http://stagingserver:8080/console-standard/maven-repo/] |
如果您自己設置了 Maven 2 存儲庫,請確保在存儲庫根目錄下有 geronimo-plugins.xml 文件。插件安裝程序檢驗這個文件來獲得可用插件和它們的元數據。這個文件的內容應該類似于 清單 2。
清單 2. geronimo-plugins.xml 文件的內容
| <?xml version="1.0" encoding="UTF-8" ?> xmlns="http://geronimo.apache.org/xml/ns/plugins-1.1"> ... ... ... ... http://www.geronimoplugins.com/repository/geronimo-1.1 http://www.ibiblio.org/maven2/ |
在上面的 geronimo-plugins.xml 文件中,每一個 元素應該包含插件的描述和 表 1 所列的 元素的所有子元素。 項指出了可以在哪些存儲庫下載這些插件以及它們的依賴項。這個默認的存儲庫列表總是包含當前存儲庫(您設置的存儲庫)的名字。(除非關聯的 Maven 存儲庫安裝在其他某個地方)。
Geronimo 插件的前景
在運行的服務器中即時添加預先配置的模塊的能力是引人注目的。在 Geronimo 社區中圍繞這個新特征有許多激動人心的成果。只要這些創造性的人們興奮起來了,就說明將會有革新和迅速的演變。這個特性是開放源碼的、訪問不受限制而且不 斷地得到改進,因此它將迅速地被業界接受,其速度不是專有的或許可限制更嚴格的服務器所能達到的。
以后可能還會有一些更令人興奮的改進:
- 使用插件對 Little-G 服務器發布版進行漸進式升級,使其包含 EJB、EJB + ActiveMQ、EJB + Derby、EJB + ActiveMQ + DerbyThe 等等。這將允許用戶安裝正好適合自己具體需要的服務器。
- 嵌入集群的能力,使一組 Geronimo 服務器實例能夠像一個超級服務器一樣工作。
不要猶豫了。有了本文介紹的信息,您可以創造性地在 Geronimo 中利用插件了。
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/374079/viewspace-130298/,如需轉載,請注明出處,否則將追究法律責任。
轉載于:http://blog.itpub.net/374079/viewspace-130298/
總結
以上是生活随笔為你收集整理的[转载]通过插件支持,Geronimo 提供了 one-click 升级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx实现文件共享
- 下一篇: three.js学习笔记(十四)——Sh