osgi - Karaf 发展

标签 osgi apache-karaf

我目前正在为 karaf 开发 bundle 并有一些问题...

我写了一个基于 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)))

那么这里有个问题,这个包依赖来自spring-aop(3.1.0.RELEASE),那么问题出在哪里呢?缺少什么依赖?我该如何解决这些问题?

那是我没有清楚地了解开发过程。我应该在部署中部署所有丢失的包吗?因为我想让第三方库从我开发的包中分离出来。我必须部署哪些 bundle ?这是一个反复试验的过程吗?有没有一种通用的方法让 maven 做依赖的事情?

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

我有一个带有一些预部署包的 karaf 用于测试用例,并将我的 web 服务包放入其中,但再次出现异常...

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

缺少什么依赖项?

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

谢谢! 克里斯

最佳答案

简答

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


spring-aop

在 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 不满足。


部署/安装

您可以将包放入 ${karaf.home}/deploy 或使用控制台。

您可以使用以下命令从 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 套件。对于部署大量 bundle 非常有用,它们可以安装到 Maven 存储库中。

Karaf 中有一些可用的标准功能,请尝试:

features:install war

这会给你一个 jetty webcontainer 并且可能会解决你的 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 手册。 时刻注意信息可能已过时

关于osgi - Karaf 发展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9414375/

相关文章:

eclipse - OSGi 捆绑了 Eclipse 中的依赖管理

java - 谁能提供一个通过 main() 启动 OSGi 应用程序的简单示例

java - 无法解析标准 java 导入

java - 创建 LoginContext 时没有配置 LoginModules 错误 (JAAS)

osgi - Apache Karaf 到底是什么?

apache-camel - 使用 maven3 创建具有所有依赖项的单个 Camel 应用程序包

java - 在将监听器注册到 Felix 事件管理之前,如何处理 Osgi 模块生成的事件

Jsf 在 Apache Karaf 3.0.3 中的应用

java - Servicemix 找不到 javax.validation 包

java - 如何允许与 Karaf 远程连接(进行远程调试)?