问题标签 [apache-karaf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
791 浏览

openjpa - 如何使用 Pax Logging 配置 OpenJPA 日志记录?

如何配置 OpenJPA 以在 Karaf 中使用 Pax 日志记录?根据我发现的几个线程(例如pax-logging 的 log4j 错误),似乎设置

(或slf4j)在 persistence.xml 和

在 org.ops4j.pax.logging.cfg 中应该可以工作,但它不适合我。版本为:OpenJPA 2.2.0、Karaf 2.3.0、Pax Logging 1.7.0。OpenJPA 日志记录导入正确解析为 Pax 日志记录:

编辑:我刚刚注意到这个版本的 Pax Logging exports org.apache.log4j,但如果我设置openjpa.Loglog4j,我的包无法正确启动:

并且由于某种原因无法获得这种依赖关系。

0 投票
3 回答
4734 浏览

java - Karaf 中的 XML 解析器类加载问题

我有一个执行一些 LDAP 操作的 OSGi 包。它使用 Apache 共享目录来执行这些操作。我正在使用 Maven Bundle Plugin 来构建我的包。由于时间和资源不足,我不得不在生成的包中使用 pom.xml,其中包括 Apache 共享目录和它所依赖的其他 jar。依赖项之一是 Xerces,然后是 Xml api。当我将这两个 jar 包包含在包中时,Karaf 会抛出 ClassCastException:

进一步调查显示,该类javax.xml.parsers.DocumentBuilderFactory是从两个 jar 中加载的——Xml-apis.jar我包含在我的包和 JRE 中rt.jar,这导致ClassCastException. 由于这个类是从 加载的rt.jar,我想我不需要包含Xml-apis.jar在我的包中并删除它。但是,现在我看到了ClassNotFoundException

所以,如果我包括xml-apis.jar,我得到ClassCastException. 如果我不包括它,我会得到ClassNotFoundException. 有没有办法解决这个问题?任何帮助,将不胜感激。

0 投票
3 回答
679 浏览

java - 骆驼 - unmarshal().serialization() - ClassNotFoundException

我试图用序列化方法解组一个不是当前包但在公共组件包中的bean。

当骆驼尝试解组我的 bean 时,我收到以下错误:

22:43:11,865 | 错误 | nModule-thread-1 | 默认错误处理程序 | 89 - org.apache.camel.camel-core - 2.8.0.fuse-06-11 | exchangeId 交付失败:ID-ITEM-64684-49962-1354223882336-2-1。交付尝试后用尽:1 捕获:java.lang.ClassNotFoundException: commons.InformationInput java.lang.ClassNotFoundException: commons.InformationInput at java.net.URLClassLoader$1.run(URLClassLoader.java:202)[:1.6.0_33] at java .security.AccessController.doPrivileged(Native Method)[:1.6.0_33] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)[:1.6.0_33] at java.lang.ClassLoader.loadClass(ClassLoader.java: 306)[:1.6.0_33]http://stackoverflow.com/questions/6749334/osgi-bundle-access-spring-context-file-from-another-bundle at java.lang.ClassLoader.loadClass(ClassLoader.java: 247)[:1.6。

我的包含 bean 的包已正确启动,并且我在包定义的Export-Package中定义了commons

有没有人设法做到这一点?

0 投票
1 回答
854 浏览

apache-camel - 在 karaf 使用骆驼流

我正在 karaf 运行一个股票示例路线。我知道它正在工作,因为当我将 stream:out 更改为 log:test 时,我可以每 5 秒看到一次日志中的消息。但是,我似乎没有在 karaf 控制台中得到任何东西。我也安装了骆驼流,在日志中看不到任何错误。我应该在运行 karaf bin/client 时看到 stream:out 数据吗?谢谢!

我在下面添加了功能信息。我现在使用的是 karaf 2.2.9。我在 2.3.0 上试过:

我也尝试过以下方法:

我得到:

如果我将“to uri”从“log:test”更改为“stream:out”,然后运行 ​​bin/client 我什么也得不到。这是一个有效的控制台输出测试吗?

我也应该添加这个:

0 投票
3 回答
2698 浏览

java - OSGI JNDI 是否允许与来自非 OSGI 代码的 JNDI 调用共存?

OSGI Enterprise Release 5 规范的第 126 章提到了兼容性:

“支持 Java SE 和 Java EE 客户端使用的传统 JNDI 编程模型。”

以及使用不支持 OSGI 的代码:

“不知道 OSGi 的客户端和 JNDI 上下文提供者使用静态方法连接到 JRE JNDI 实现。InitialContext 类提供从提供者对上下文的访问,提供者使用静态 NamingManager 方法进行对象转换和查找 URL 上下文。这个传统模型不知道 OSGi,因此只有在对缺乏 OSGi 意识的后果进行管理的情况下才能可靠地使用。”

但我不清楚此文本是否仅适用于在 OSGI 包内执行的“遗留”代码,或者也适用于 OSGI 容器外部的代码,例如在 OSGI 容器嵌入应用程序的情况下。

在嵌入场景中,OSGI 容器外部和内部都可能存在执行 JNDI 调用的应用程序代码,并且当它们在同一个 JVM 中执行时,它们将共享 JNDI 实现。

问题:在嵌入式 OSGI 容器中运行的 OSGI JNDI 实现是否应该允许容器外的不支持 OSGI 的代码像往常一样执行其 JNDI 调用,或者是否需要移植到“OSGI-awareness”?

我自己用 Apache Karaf 2.3.0(它使用 Apache Aries JNDI 1.0.0)尝试这个似乎不起作用,因为 Apache Aries 要求 JNDI 客户端调用源自 OSGI 包。
部分堆栈跟踪:

问题:这是正确的行为,还是我可以参考的规范中的某个部分违反了此限制?

0 投票
2 回答
5284 浏览

jpa - 未注入 OSGI 服务 JPA PersistenceContext

我有一个核心库,它有一个接口,我想在 Fuse ESB(Apache ServiceMix 和 Karaf)中将其公开为 OSGI 服务。目标是允许其他捆绑包使用它。该服务使用 JPA (OpenJPA) 和 Spring。下面是界面:

和班级:

以下是缩写META-INF/spring/beans.xml

META-INF/persistence.xml(也缩写):

在非 OSGi 环境中,一切正常。它使用 felix maven-bundle-plugin,所以为了创建 OSGi 服务,我添加了以下内容OSGI-INF/blueprint/osgi-context.xml

捆绑包部署成功并注册了服务。问题是当PatientService从另一个包中引用时,实体管理器还没有被注入,因此NullPointerExceptionfind(Integer id)方法中抛出了一个。以下是消费者的片段META-INF/spring/consumer-context.xml

为了清楚起见,PatientService被注入到消费者包中,但实体管理器没有被注入到提供者包中。此外,由于在启动原始服务时出现以下日志输出,因此持久性单元似乎不是问题:

为了了解发生了什么,我在PatientServiceJpaImpl类的构造函数中记录了对象内存引用和堆栈跟踪。构造函数被调用了两次(创建了两个不同的对象):

  1. 第一个输出似乎源自 osgi 容器,从 开始,org.apache.felix或多或少以org.apache.aries.blueprint.

  2. 第二个输出似乎起源于 spring 框架,从 开始,org.springframework.osgi或多或少以org.springframework.beans.BeanUtils.

当调用消费者服务时,它的引用是对蓝图实例化对象的引用,该对象没有注入的实体管理器。同样从日志中,持久化单元在对象的蓝图实例化之后被实例化PatientServiceJpaImpl

我已经搜索并修补了这个问题很长一段时间,但我已经没有想法了。具有讽刺意味的是,它实际上在某一时刻有效,但我做了很多改变才能让它发挥作用,以至于它是一个我无法成功退出的老鼠窝。

为什么蓝图托管对象中没有注入持久化上下文?任何想法将不胜感激。谢谢。

0 投票
2 回答
14741 浏览

logging - 记录骆驼异常并发送到死信通道

我有一条骆驼路线,在卡拉夫内运行,为此我添加了一个死信频道。这是为了处理路由失败的情况,我想保留问题消息并记录原因。由于我正在异步处理一些处理,因此我无法将异常抛出回调用应用程序。

通过阅读文档并尝试了许多案例,我不清楚如何将异常记录到 Karaf 的日志中并将原始消息存入死信队列。

这是我所拥有的摘录:-

如果我删除“onException”结构,那么在所有异常情况下,源消息都会出现在死信队列中,但不会被记录。

如果我按上述方式运行它,那么异常跟踪将记录到 Karaf 的日志中(如果它是“notificationException”),但相关的源消息不会回滚到死信队列并消失在以太中(大概是因为它认为我'已经在“onException”结构中处理了它)。

在查看了不同类型的错误处理程序之后,我尝试向 DeadLetterChannelBuilder 添加一些东西,例如......

...但这些不是合法财产。

让我感到震惊的是,必须在 onException 子句中明确列出不同的异常是不正确的。

那么,如何让死信通道记录异常跟踪以及将消息放入队列?也许死信通道不是正确的处理程序——在这种情况下,我对自动重新发送并不感兴趣。

感谢您的任何指导,

J。

0 投票
2 回答
2760 浏览

war - 如何在 apache-karaf 启动时部署战争

我创建了一个战争文件,通过运行 osgi:install 命令在 karaf 中部署,例如

如何配置 karaf 以便在 karaf 实例启动时发生这种情况?

我已更改 org.apache.karaf.features.cfg 文件以默认启动战争功能

0 投票
2 回答
176 浏览

apache-karaf - karaf 日志不显示日期

karaf 日志不显示日期(日月年),它只显示时间,是否应该进行任何配置以在 karaf 日志中显示日期和时间。

0 投票
0 回答
625 浏览

osgi - 在一个 VM 中运行多个 Play 应用程序

每当我运行“play run”命令时,都会启动一个新的 JVM,它让 NettyServer 在默认端口 9000 上运行 play 应用程序。

但是在 play 2.0.4 中是否有可能发生以下任何事情?

  1. 运行一台 netty 服务器,在一个 JVM 中运行多个 play 应用程序

  2. 在不同的端口上运行多个 netty 服务器以在一个 JVM 中运行多个播放应用程序

我想在 Karaf 容器中部署多个播放应用程序(项目要求:))所以希望它们在一个 Karaf VM 中运行。