在将现有的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.
如何实现上述定义的方案。提前谢谢。
答案 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。