領先一步
VMware 提供培訓和認證,以加速您的進度。
了解更多SpringSource Application Platform 的主要優點之一是它能夠根據需要佈建相依性。 這具有雙重好處:它確保 Platform 的記憶體佔用空間盡可能小,並且允許部署應用程式而無需將其所有相依性封裝在單一的部署單元中,例如 WAR 檔案。 為了利用這些功能,您需要了解 Platform 的佈建儲存庫,而此部落格的目的正是提供這些資訊。
當 Platform 啟動已部署的應用程式時,其套件會安裝到 Equinox 中。 然後,Platform 會要求 Equinox 提供所有套件未滿足的相依性清單,並嘗試滿足它們。 讓我們通過一個簡單的範例情境來分析這個過程
如果 Platform 無法從其儲存庫中滿足相依性,則會產生一條日誌訊息,詳細說明無法滿足的相依性。 掌握這些資訊後,您可以使用 SpringSource Enterprise Bundle Repository 來取得您需要的內容。 我們希望儲存庫提供盡可能完整的套件集:如果您需要某個相依性,但它不可用,請 告訴我們。
如上所述,Platform 使用在其啟動期間填充的佈建儲存庫的記憶體索引。 除此之外,Platform 還會在每次部署應用程式時檢查其儲存庫視圖是否為最新。 當您想要安裝具有新相依性的應用程式時,只需將相依性複製到儲存庫中的適當位置,然後部署您的應用程式。 在其部署過程中,Platform 將注意到儲存庫已更新,並將重新整理其視圖。 這表示您無需花費時間在每次想要安裝具有新相依性的應用程式時重新啟動 Platform。
可以在 config/platform.config 檔案中配置 Platform 在建立其佈建儲存庫時掃描的位置。 在沒有任何特定配置的情況下使用的預設配置是
"provisioning" : {
"searchPaths": [
"repository/bundles/subsystems/{name}/{bundle}.jar",
"repository/bundles/ext/{bundle}",
"repository/bundles/usr/{bundle}",
"repository/libraries/ext/{library}",
"repository/libraries/usr/{library}"
]
}
任何相對路徑都由 Platform 解釋為相對於其安裝根目錄,同時也支援絕對路徑。 大括號內的搜尋路徑中的條目只是萬用字元,例如,子系統搜尋路徑 repository/bundles/subsystems/{name}/{bundle}.jar 將在任何 subsystems 目錄的直接子目錄中尋找任何名稱以 .jar 結尾的檔案。
希望您可以看到,在 Platform 之間共用部分或全部佈建儲存庫是一項微不足道的變更。 例如,若要使 Platform 除了在它自己的 subsystems 和 ext 目錄中之外,還搜尋檔案系統根目錄中名為 shared-bundles 的目錄,您所需要做的就是將以下 JSON (JavaScript Object Notation) 片段新增到 platform.config 檔案中
"provisioning" : {
"searchPaths": [
"repository/bundles/subsystems/{name}/{bundle}.jar",
"repository/bundles/ext/{bundle}",
"/shared-bundles/{bundle}",
"repository/libraries/ext/{library}",
"repository/libraries/usr/{library}"
]
}
通過使用此配置配置兩個或多個 Platform 安裝,可以使它們共用 /shared-bundles 中的套件。 通過配置所有搜尋路徑以指向共用位置,可以輕鬆地將此步驟更進一步,因此您根本不需要管理每個 Platform 的佈建儲存庫。
我們還打算通過允許將 Platform 配置為在嘗試滿足相依性時選擇性地搜尋遠端儲存庫,來結合 Platform 的隨需佈建和 SpringSource Enterprise Bundle Repository 的強大功能。 如果在遠端儲存庫中找到相依性,Platform 將自動處理其下載和安裝。 希望這將使開發人員的生活更加輕鬆,尤其是在應用程式開發的初始階段,因為會定期新增新的相依性。
當我們致力於上述增強功能和 Platform 時,我們很樂意聽到您的建議:請隨時評論此部落格文章、提出 JIRA,或在我們的 論壇上發表文章。