我有一个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的句柄的正确方法是什么?
最佳答案
我想是由Spring Dynamic Modules加载您的上下文的-所以您不应该自己做。看一下Spring DM documentation-这将很有用。
Spring DM会将应用程序上下文发布为OSGi服务。查看说明here并遵循建议。
另请参阅以下我的评论。
关于spring - 在OSGi bundle 中访问Spring上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3789201/