我目前正在決定從IDE運行OSGi應用程序時使用哪一個執行程序(請參閱http://paxrunner.ops4j.org/space/Executors瞭解可用程序的列表)。有我基本上有兩種選擇,當我想從與大同亞軍IDE中運行的過程:Pax Runner:任何與進程內執行者的經驗?
進程內執行人(運行OSGi的過程在同一個Java程序的大同亞軍本身):
- PRO:易於將調試器附加到。
- PRO:因爲沒有第二個Java VM啓動,所以很容易殺死OSGi進程。
PRO:更快開始。
CON:嚴重限制了paxrunner對非javaVM設置的能力(一個來自Pax Runner的文檔)。
默認執行人:(運行在一個新的Java進程OSGi的過程)
PRO:使大同亞軍設置各種JavaVM的設置。
CON:難以附加調試器(需要一些遠程調試設置)。
- CON:如果Pax Runner沒有正確執行,幾乎不可能殺死OSGi進程。
- CON:啓動兩個JVM時啓動時間較長。
所以我的問題基本上是,如果有人遇到Pax Runner的JVM設置功能非常重要的情況,並且OSGi進程在使用進程內執行程序時不起作用。我還沒有找到這樣的例子,但是我需要決定是否支持進程內默認執行程序,或者兩者都支持,所以一些使用默認執行程序的JVM設置功能的現實世界用例真的可以幫助我做出這個決定。
我正在開發一個Java IDE的插件,它允許從IDE啓動您的OSGi應用程序。這當然主要是出於測試原因,但不一定是出於單元測試的原因。這就像從你的IDE啓動一個Tomcat手動測試你的應用程序,只是這個插件啓動了一個OSGi容器。目前該插件使用默認的執行程序來啓動容器,但工作得很好,但是我的CON列表中的第二個正在踢入,所以我不知道是否可以在不犧牲任何重要功能的情況下安全地切換到進程內執行程序。 – 2011-04-21 06:24:52