簡體   English   中英

管理大型OSGi應用程序

[英]Managing a Large OSGi Application

我有一個大型的,不斷增長的OSGi應用程序,包含許多捆綁包。 我很想知道管理這種類型應用程序的最佳方法。 目前,我正在使用Eclipse和Maven,但是雖然這對於構建bundle非常有用(通過maven-bundle-plugin),但到目前為止,管理整個應用程序並不容易。

我想做的是要么啟動一個運行配置,要么啟動ONE pom.xml,並且可以構建和啟動整個應用程序/項目。 此外,我想有一些適合調試的東西。

我聽說過PAX Construct並將它安裝在Eclipse中,但到目前為止它沒有什么幫助(也許我沒有正確使用它)。

我確信有些人正在使用正確管理的大型OSGi應用程序。 任何可以分享的建議都會有很大幫助。

謝謝你,斯蒂芬

可通過Pax Runner進行運行配置。 它允許您選擇OSGi平台實現,指定配置文件(某些角色的預打包捆綁集,例如weblogds等)並具有良好的配置支持,例如它可以從Maven存儲庫加載捆綁包。 因此,您可以使用類似的運行配置

--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/1.0.1-SNAPSHOT@update
# other bundles

如果您的應用程序非常大或者您有不同的應用程序,那么也可以創建自己的配置文件。

好...

這一切都取決於“管理”應用程序的意思。

對於開發時間的啟動,構建和調試 - Eclipse IDE應該完全符合要求。

Maven ......我不能說話,因為我自己從未使用它。

我們有一個非常大的基於eclipse的應用程序(實際上是幾個),並且在開發方面我們除了Eclipse和它的集成SCM之外我們沒有使用任何特殊的東西。

在cc構建服務器中,我們還使用無頭eclipse進行構建和打包。

現在,所有依賴項和中間構建步驟的工作區設置已經失控了,所以我們正在研究Buckminster來管理目標平台和工作區資源的實現。

如果能夠實現這一目標,我們可能會轉而與Bucky建立合作 - 這看起來很有希望。

(我對PAX沒有任何經驗,但一目了然,看起來很有希望...)

我對OSGi很新,但是,

是不是可以以這樣一種方式使用OBR服務,即你有一個需要捆綁的OBR存儲庫文件,讓OBR服務找出依賴關系並為你填充你的OSGIhost?

我認為這個領域目前支持得很差。 OSGI並沒有真正定義任何有關部署或打包的內容,因此它可以通過自己的方式來實現其他框架(例如Eclipse)。

如果你正在構建一個RCP(Eclipse基礎)應用程序,那么eclipse系統會完成所有這些工作,直到創建exes等。然而,構建主要在Eclipse工作區完成,無頭構建更加棘手。 Tycho項目試圖通過加入Maven和Eclipse構建周期來使這更加明智,但它仍然專注於RCP應用程序而不是通用OSGI。

如果你沒有做RCP,這也是我的情況,那么你可能不得不推出自己的解決方案,因為我還沒有找到任何通用的解決方案。 以下是我們的工作概要:

我們定義了一個POM項目,列出了應用程序中包含的所有bundle。 所有這個項目都列出了引用 - 讓我們稱之為'bundle-list'項目。

然后,我們使用pax provision在開發模式下運行項目。 這是通過將'bundle-list'pom作為pax項目的供應pom的父項(通常在'provision'文件夾中)來實現的。 然后,當您啟動pax時,它使用該項目中的bundle列表來啟動OSGI。 “bundle-list”項目中的bundle引用必須標記為“提供”范圍才能使其生效。

然后,為了創建分發,我們有另一個項目。 該項目還將'bundle-list'項目作為其父項。 該項目使用各種插件來創建分發,包括下載捆綁jar。 該發行版包括啟動OSGI的腳本,但這些都是手寫的,這里沒有pax系統。

這對我們來說很有效,可以將捆綁列表保存在一個地方,但是仍然有很多手寫腳本,並且在兩個系統之間存在共享配置的問題 - 例如配置文件,捆綁啟動級別等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM