2010-11-10 39 views
4

我有一个支持Spring的OSGi包。我希望这个包可以导出一个工厂类型的OSGi服务,客户端软件可以使用这个服务来创建这个包中定义的应用程序上下文的多个实例。在OSGi包中克隆Spring应用程序上下文

默认情况下,Spring DM库捆绑包将自动扫描并从“META_INF/spring”下找到的任何Spring XML配置中创建应用程序上下文的实例。为了避免这种情况,我将Spring XML配置文件移动到了不同的文件夹下,然后尝试按需要从工厂类以编程方式创建应用程序上下文。不幸的是,我遇到了Spring模式文件在bundle classpath中不可用的问题。我真的不想在我的包中嵌入必需的Spring Jar来访问这些模式。

是否有一种更简单的方法克隆OSGi环境下的Spring应用程序上下文?

+0

这个“工厂型OSGi服务”是如何使用的?它是否像myOsgiService.newInstance(),或配置文件中的服务实例,让客户端引用它们? – yihtserns 2012-05-06 10:02:30

回答

1

我不明白你的问题的细节,但如果你只是想从不同于META-INF/spring的位置加载应用程序上下文,你可以使用'Spring-Context'在MANIFEST.MF文件中定义它,例如用于根文件夹中的文件

Spring-Context: /application-context-core.xml,/application-context-osgi.xml 

有关详细信息,请参阅documentation

+0

问题是我需要创建同一应用程序上下文的多个实例。如果我有Spring DM创建应用程序上下文,那只会有一个实例。 – 2010-11-15 17:40:47