5

我有一个 OSGi 包,它使用 bundle-context.xml 文件来初始化一个 bean。

<bean id="myBean" class="test.MyClass">
    <property name="output" value="test"/>
</bean>

我有一个需要获取 bean 实例的工厂类。在非 OSGI 世界中,我总是只做以下初始化上下文并获取 bean 的句柄......

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bundle-context.xml");
MyClass bean = (MyClass) applicationContext.getBean("myBean");

但是,在 OSGI(FuseESB 4.2,Servicemix4)中,容器会自动加载 bundle-context.xml 文件并初始化 spring 上下文。如果我显式加载上下文(使用上面的代码),则会创建 2 个上下文(这很糟糕)。那么,获取相同上下文/bean 句柄的正确方法是什么?

4

1 回答 1

4

我想是 Spring Dynamic Modules 加载了你的上下文——所以你不应该为自己做这件事。查看 Spring DM文档- 这将很有用。

Spring DM 会将应用程序上下文发布为 OSGi 服务。看看这里的解释并遵循建议。

另请参阅下面的评论。

于 2010-09-27T14:39:14.473 回答