2012-01-10 59 views
2

彈簧機構,我們寫了使用彈簧引擎蓋下一個框架。這個框架被兩個應用程序使用。可以使用運行的應用程序1或應用程序2或應用程序1和應用程序2來配置生產服務器。類似OSGI/Eclipse擴展點

現在我要尋找一個彈簧機構,其工作原理類似於OSGI擴展點的想法,讓每個應用程序可以在沒有配置文件,所有的應用程序需要被上市「貢獻」給框架。

完整的項目結構(簡化;-)):

框架:A,IPlugin,A.XML

應用1:B擴展IPlugin,B.XML

應用2:C擴展IPlugin,c.xml

Explenation: 「A」使用IPllugin的列表,如果必須實現特定的任務,它將被調用。

我只發現聲明A作爲PROTOTYP和設置「B」和「C」作爲屬性的彈簧方式。因此,我必須在A.xml中明確列出。但我想在b.xml和c.xml中配置貢獻。

問題:

  • 有春天的可能性,如果創建一個特殊的bean的實例進行修改?

  • 有春天類似OSGI/Eclipse擴展點東西開箱?

  • 其他建議?

+0

從/在運行時的框架,你需要能夠添加/刪除任何應用程序? – Vlad 2012-01-10 18:17:54

+0

我同意dm可能是你最好的選擇,否則我會考慮一個簡單的插件機制;註冊處理程序也可以注入。 – 2012-01-10 19:39:10

+0

添加和刪除不需要在運行時發生。 @DaveNewton我想到了這種方法,但無法開發解決方案。你能提供一些提示還是你有一個例子? – EhmKah 2012-01-10 19:43:02

回答

0

我的解決辦法是建立在將在與範圍「單身」春天來創建框架項目「註冊表」。所以每個插件都可以對這個註冊表有所貢獻,因爲它在應用服務器的運行時期間可用於所有插件。由於每個插件都應該創建新的,所以我使用了一個工廠的幫助,該工廠從spring-context創建新的插件實例。

更多細節可以在一個小文章,我寫,並發現它可以downloaded

0

看看Spring Dynamic Modules。引進的第一行說,這一切:

春季動態模塊的OSGi(TM)服務平臺項目可以很容易地構建在OSGi框架中運行的Spring應用程序

+0

這是否意味着我需要支持OSGI的運行時?由於我們的應用程序運行在一個老的tomcat上,所以這可能對我們不適用。 :-(但是我會看看框架,也許它給了我一些想法 – EhmKah 2012-01-10 19:41:28

+0

OP在OSGi容器中尋找OSGi類似於Spring的功能。 – Robin 2012-01-11 14:38:04

+0

在什麼時候,陳述了嗎?只是因爲提問者想要像OSGI這樣的東西,並不意味着他們不願意使用OSGI。在帖子最後的第二個問題說明了一切,類似於Spring支持的OSGI,更像是什麼OSGI比OSGI更好嗎? – 2012-01-11 14:47:10

0

也有人建議在Spring-DM或Blueprint中使用OSGi。如果你決定這就是你想要做的 - 我自己也不確定,因爲我沒有完全理解問題描述 - 那麼你應該能夠將OSGi框架嵌入到現有的應用程序中(是的,甚至是在Tomcat裏面......)。

我寫了一篇關於如何嵌入OSGi的,可以幫助你上手blog post。但首先查看OSGi與Spring-DM是否真的是你想要的,如果你需要幫助做出這個決定,請問後續問題。