2012-01-10 62 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是否真的是你想要的,如果你需要帮助做出这个决定,请问后续问题。