无法从osgi karaf中依赖项的src/main/resources导入资源

无法从osgi karaf中依赖项的src/main/resources导入资源,osgi,karaf,Osgi,Karaf,将现有的spring项目迁移到osgi karaf时,我们在从依赖包导入资源时遇到了问题。例如 捆绑包A具有appcontxt-A.xml,捆绑包B具有appcontext-B.xml 在这里,我将捆绑包B中的appcontxt-A.xml称为(),原因是:java.io.FileNotFoundException:类路径资源[appContext-A.xml]不存在,无法打开。 如何实现上述定义的场景。请提前感谢。我不完全清楚您如何尝试访问appContext-A.xml资源,因为您没有包含任

将现有的spring项目迁移到osgi karaf时,我们在从依赖包导入资源时遇到了问题。例如
捆绑包A具有
appcontxt-A.xml
,捆绑包B具有
appcontext-B.xml

在这里,我将捆绑包B中的
appcontxt-A.xml
称为
()
,原因是:
java.io.FileNotFoundException:类路径资源[appContext-A.xml]不存在,无法打开。


如何实现上述定义的场景。请提前感谢。

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

bundleContext.getBundle(bundleA).getResource(resource)

有了进一步添加的信息,就很清楚了,您需要确保bundle A确实导出了资源,而be确实导入了资源。 此外,您还需要确保检索到Christina所说的资源


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

经过长时间的研究,解决了文件不存在的问题,通过(在类路径后添加*)解决。但是,在访问“context:annotation-config”时,存在另一个问题,即无法找到XML架构命名空间的Spring NamespaceHandler[,有什么帮助可以解决这个问题吗?

感谢您的宝贵意见。添加下面的代码片段。我在Bundle B中有activator类,它使用ClassPathXmlApplicationContext创建applicationContext,如下所示applicationContext applicationContext=new ClassPathXmlApplicationContext(“appContext-B.xml”);在appContext-B.xml中,我有Bundle A的导入资源,因为它真的需要Spring DM吗?实际上,我们正在将现有的Spring模块迁移到OSGI。因此,我们正在尝试Spring版本(3.1.4_版本)在我们的项目中使用。我也尝试过导出和导入包,但不起作用。如果你想坚持使用Spring,你需要添加Spring dm,否则Spring在OSGi环境中无法工作。但最好转移到Blueprint。我们有很多完全运行并依赖于Spring框架的模块。是吗这意味着首先将这些代码从spring实现迁移到spring dm?或者使用blueprint?spring dm只是增加了将osgi服务引用为spring bean的可能性,这将有助于理顺spring上下文。因此,无需迁移到spring dm,只需将其添加到容器中即可。如果您想迁移到更面向服务的接近blueprint!明白了。首先,我将在osgi容器(karaf)中安装spring dm。我仍然对导出和导入资源感到困惑。在我的pom.xml包A.b.c.appContext-A.xml src/main/resources中。但是当我尝试访问包b中相同的appcontxt-b.xml时,我得到的文件不存在异常。我仍然不清楚Christina点。