Felix 中的 JMS ActiveMQ OSGI 包

JMS ActiveMQ OSGI bundle in Felix

我正在尝试在 Felix(没有 Karaf)中添加一个新的 OSGI 包作为 ActiveMQ 客户端(消息发送者)。

ActiveMQ 客户端在非 OSGI 环境中运行良好。但是当我在 Felix 中使用相同的代码(稍作修改)时,它会抛出这个错误:

org.osgi.framework.BundleException: Unable to resolve com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3): missing requirement [com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms)(version>=1.1.0)) Unresolved requirements: [[com.packtpub.felix.bookshelf-inventory-impl-mock [7](R 7.3)] osgi.wiring.package; (&(osgi.wiring.package=javax.jms)(version>=1.1.0))]

非常感谢任何帮助。

解压消息后,消息清晰明了:

Unable to resolve com.packtpub.felix.bookshelf-inventory-impl-mock[7]

捆绑包 7 (com.packtpub.felix.bookshelf-inventory-impl-mock) 有问题

(R 7.3): missing requirement 

你有一些更新,bundle 7 是第三次修订。虽然在这里不那么相关:-)

osgi.wiring.package;

您缺少一个包(osgi.wiring.package 是 Import/Export 包 headers 的 OSGi 命名空间。)

(&(osgi.wiring.package=javax.jms)(version>=1.1.0))

这是一个 LDAP/OSGi 过滤器。让我们解压它:

osgi.wiring.package=javax.jms

正在寻找包裹javax.jms

version>=1.1.0

并且版本应该大于等于1.1.0

javax.jms 是一个 Java EE 包,不是 JRE 的一部分。您需要找到一个导出它的包(具有正确的版本)。由于您编译了代码,因此您必须已经将其包含在您的构建中。找到该包并将其部署到您的框架。