无法从osgi karaf

时间:2015-04-22 13:48:14

标签: osgi karaf

在将现有的spring项目迁移到osgi karaf时,我们在从依赖bundle导入资源时遇到了问题.Eg。
 Bundle A的appcontxt-A.xml和Bundle B都有appcontext-B.xml

我在这里将{B}中的appcontxt-A.xml称为(<import resource="classpath:appContext-A.xml" />),因为我引起了java.io.FileNotFoundException: class path resource [appContext-A.xml] cannot be opened because it does not exist.

如何实现上述定义的方案。提前谢谢。

3 个答案:

答案 0 :(得分:1)

我并不完全清楚你是如何尝试访问appContext-A.xml资源的,因为你没有包含任何代码示例,但请记住,在OSGi包A和B中有不同的类加载器,因此你会无法直接从bundle B获取bundle A的资源。你可以做的是通过BundleContext获取对bundle A的引用,并从那里获得你需要的资源。如下所示:

bundleContext.getBundle(bundleA).getResource(resource)

答案 1 :(得分:1)

经过长时间的研究解决了文件不存在的问题通过(在classpath之后添加*)解决了。但是,在访问“context:annotation-config”时,还有另一个问题无法找到XML架构名称空间[http://www.springframework.org/schema/context]的Spring NamespaceHandler,有任何帮助来解决此问题吗?

答案 2 :(得分:0)

通过进一步添加的信息,很明显,您需要确保捆绑包A确实实际导出资源,并确实实际导入它。 另外,你需要确保像克里斯蒂娜所说的那样检索该资源。

如果您使用的是基于Spring的方法,请确保您也可以使用Spring-DM。