我有一个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句柄的正确方法是什么?
答案 0 :(得分:4)
我认为是Spring Dynamic Modules加载你的上下文 - 所以你不应该为自己做这个。看看Spring DM documentation - 这将非常有用。
Spring DM将应用程序上下文发布为OSGi服务。请查看解释here并按照建议进行操作。
另见下面的评论。