Osgi 卡拉夫开发

Osgi 卡拉夫开发,osgi,apache-karaf,Osgi,Apache Karaf,我目前正在为karaf开发捆绑包,有一些问题 我基于cxf编写了一个bundle/webservice,我尝试在karaf中部署它,但它无法启动该bundle,因为它无法解析某些包,例如 org.osgi.framework.BundleException:bundle org.springframework.aop[56]中未解析的约束:无法解析56.0:缺少 要求[56.0]包;(&(package=org.aopalliance.aop)(版本>=1.0.0)(!(版本>=2.0.0)))

我目前正在为karaf开发捆绑包,有一些问题

我基于cxf编写了一个bundle/webservice,我尝试在karaf中部署它,但它无法启动该bundle,因为它无法解析某些包,例如

org.osgi.framework.BundleException:bundle org.springframework.aop[56]中未解析的约束:无法解析56.0:缺少 要求[56.0]包;(&(package=org.aopalliance.aop)(版本>=1.0.0)(!(版本>=2.0.0)))

所以这里有一个问题,这个包依赖性来自SpringAOP(3.1.0.RELEASE),那么问题出在哪里呢?缺少什么依赖关系?我怎样才能解决这些问题

在这种情况下,我没有清楚地理解开发过程。我应该在deploy中部署所有缺少的捆绑包吗?因为我想让第三方libs从我开发的bundle中保留下来。我必须部署哪些捆绑包?这是一个反复试验的过程吗?有没有一种常见的方法让maven做依赖性的事情

我发现了一个文件夹“system”,并在docu上读到它是一个像maven一样的存储库,是用于功能的吗

我为测试用例准备了一个带有一些预部署包的karaf,并将我的webservice包放入其中,但还是出现了一些异常

原因:java.lang.ClassNotFoundException:javax.servlet.http.HttpServlet

缺少什么依赖关系

我已经阅读了有关camel和karaf的教程,但它没有解释部署的内容,所以有人能给我推荐一个好的教程吗

谢谢!
克里斯

简短回答

向下滚动到引用“camel cxf”的位,并运行两个命令features:addurl和features:install。我觉得这会解决你所有的问题


春季aop

在Karaf控制台类型上:

exports | grep org.aopalliance.aop
我想你会看到这样的线条:

XX org.aopalliance.aop; version=3.1.0.RELEASE

因此,尽管spring aop捆绑包的包是正确的,但它们的版本是错误的,请求的范围是>=1.0.0,请发布MANIFEST.MF文件。我认为您没有在maven bundle插件依赖项中提到标签。

添加更广泛的标签以吸引更多潜在的答案总是值得的-我添加了OSGi标签,因为您的一些查询不是针对Karaf的
install -s mvn:groupId/artifactId/version/packaging/classifier
features:install war
features:addurl mvn:org.apache.camel.karaf/apache-camel/2.9.0/xml/features
features:install camel-cxf