我目前正在为karaf开发捆绑包,并有一些问题...
我写了一个基于cxf的bundle/webservice,我试图将它部署在karaf中,但它无法启动该bundle,因为它不能解析一些包,例如
org.osgi.framework.BundleException:捆绑包org.springframework.aop 56中的未解决约束:无法解析56.0:缺少requirement 56.0包;(&(package=org.aopalliance.aop)(version>=1.0.0)(!(version>=2.0.0)))
所以这里有一个问题,这个包依赖来自spring-aop (3.1.0.RELEASE),那么问题在哪里呢?缺少什么依赖项?我如何解决这样的问题?
在这种情况下,我不清楚开发过程。我应该在deploy中部署所有缺少的包吗?因为我想从我开发的捆绑包中保留第三方库。我需要部署哪些包呢?这是一个试错的过程吗?有没有一种通用的方法让maven来做依赖的事情呢?
我发现了一个文件夹"system“,并在文档中看到它是一个像maven一样的存储库,它是用于功能的吗?
对于测试用例,我有一个karaf和一些预先部署的捆绑包,并将我的webservice捆绑包放入其中,但再次执行...
原因: java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
缺少什么依赖项?
我已经读过了关于camel和karaf的教程,但它没有解释部署的内容,所以有人能给我推荐一个好的教程吗?
谢谢!克里斯
发布于 2012-03-02 21:08:15
Short answer
向下滚动到引用"camel-cxf“的部分,然后运行两个命令feature:addurl和feature:install。我有预感这会解决你所有的问题。
spring-面向方面编程
在Karaf控制台上键入:
exports | grep org.aopalliance.aop我想你会看到这样的代码行:
XX org.aopalliance.aop; version=3.1.0.RELEASE因此,尽管spring-aop捆绑包有正确的包,但它们是错误的版本,请求的范围是>=1.0.0和<2.0.0,因此3.1.0不能满足这一要求。
Deploying/Installing
您可以将捆绑包放入${karaf.home}/deploy或使用控制台。
您可以使用以下命令从Karaf控制台安装maven包:
install -s mvn:groupId/artifactId/version/packaging/classifier-s启动包的位置和打包/分类器是可选的。
你可以在这里找到很多准备好OSGi的maven依赖,我看了一下,但是你的spring http://ebr.springsource.com/repository/app/依赖太旧了,你用的是什么版本的CXF?
了解一下Karaf的特性--它们基本上是XML文件,列出了可以安装的捆绑包套件。对于部署大量的bundle非常有用,它们可以安装到maven存储库中。
Karaf中提供了一些标准功能,请尝试:
features:install war这将为您提供一个jetty the容器,并可以解析您的ClassNotFoundException: javax.servlet.http.HttpServlet,只要它是正确的版本
Camel也有一个功能文件,可能会解决你所有的问题,试试这个:
features:addurl mvn:org.apache.camel.karaf/apache-camel/2.9.0/xml/features
features:install camel-cxf教程
有相当多的可用资源,其中一些在http://karaf.apache.org和http://fusesource.com上,但也可以看看Karaf发行版中的PDF手册。一定要注意信息可能会过期。
发布于 2014-01-01 14:47:50
请发布您的MANIFEST.MF文件。我想你没有提到maven-bundle-plugin依赖中的标签。
https://stackoverflow.com/questions/9414375
复制相似问题