2012-02-23 72 views
2

即时通讯目前开发karaf束,并有一些问题...Karaf发展

我写了基于CXF捆/ web服务,我尝试它karaf部署,但它无法启动包,因为它不能解决一些包例如

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

所以这里是一个问题,这个包依赖来自spring-aop 3.1.0.RELEASE),那么问题在哪里?什么依赖缺失?我该如何解决这些问题?

在这种情况下,我没有清楚地了解开发过程。我应该在部署中部署所有缺少的软件包吗?因为我想保留从我开发的捆绑包中获得的第三方库。以及我必须部署哪些捆绑包?这是一个反复试验的过程吗?有没有一种常见的方式让maven做依赖的东西?

我发现一个文件夹“系统”,并在文件上读取它是一个类似maven的存储库,它是为了什么功能?

我对测试用例一些预先部署捆绑一个karaf,并把我的web服务捆绑进去,但同样execeptions ......通过

引起:抛出java.lang.ClassNotFoundException:javax.servlet.http.HttpServlet

缺少什么依赖性?

我已阅读关于骆驼和卡拉夫的教程,但它没有解释部署的东西,所以任何人都可以给我一个很好的教程吗?

谢谢! 克里斯

+0

它总是值得加入更广泛的标签,以吸引更多潜在的答案 - 我已经添加了OSGi的标签,因为这是你的一些疑问都没有Karaf具体 – earcam 2012-03-02 12:46:26

回答

7

简短的回答

向下滚动到一点提到“骆驼CXF”并运行两个命令的功能:addurl及特点:安装。我有一种感觉,这将解决你所有的问题。


弹簧AOP

在Karaf控制台类型:

exports | grep org.aopalliance.aop 

我想你会看到这样几行:

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

因此而弹簧的AOP捆绑包有正确的软件包,它们是错误的版本,请求的范围是> = 1.0.0和< 2.0.0,所以3.1.0不能满足这个要求。


部署/安装

可以删除束到$ {} karaf.home /部署或使用控制台。

可以从Karaf控制台安装Maven包:

install -s mvn:groupId/artifactId/version/packaging/classifier 

-s开始包和包装/分类是可选的。

你可以在这里找到很多OSGi的准备Maven依赖的http://ebr.springsource.com/repository/app/ - 我有一个快看,但你的Spring AOP的依赖是很老,你使用的是什么版本的CXF的?

阅读了有关Karaf特点 - 他们基本上是列出了可以安装束套房XML文件。对于部署大量的bundle非常有用,它们可以安装到Maven存储库中。

有在Karaf提供一些标准功能,尝试:

features:install war 

这会给你一个码头Web容器和可能解决您的ClassNotFoundException:javax.servlet.http.HttpServlet只要它是正确的版本

骆驼也有一个特点文件这可能排序所有的问题,试试这个:

features:addurl mvn:org.apache.camel.karaf/apache-camel/2.9.0/xml/features 
features:install camel-cxf 

教程

有不少可用的,一些对http://karaf.apache.orghttp://fusesource.com也看看自带的Karaf分布的PDF说明书。 时时提防这些信息可能是出于过期

-1

请发表您的MANIFEST.MF文件。我想你并没有提到maven-bundle-plugin依赖中的标签。