spring - 在OSGi bundle 中访问Spring上下文

标签 spring osgi apache-servicemix fuse

我有一个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/

相关文章:

gwt - 从 GWT 应用程序创建 OSGi 包

java - ServiceMix 找不到 OSGI 数据源

java - Apache camel - 将文件写入 ftp 失败

java - 在返回所述接口(interface)的通用接口(interface)中创建静态变量(或者至少在 Spring 的映射器中)

java - AEM/CQ - javax.xml.namespace 无法解析 OSGI 依赖项

osgi - 无法在 Felix config.properties 中将 PAX-URL 的程序集协议(protocol)与自动启动的 bundle 一起使用

java - Karaf 包在部署时未从 .kar 加载

spring - 模拟第三方 API 时获取 "reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response"

java - 导入 spring 上下文时为零 bean

java - 如何从 ResponseEntity 中提取对象列表?