问题标签 [apache-felix]
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.
dependency-injection - OSGi/Felix 声明式服务:如何过滤要绑定的服务?
我正在使用 Apache Felix 及其声明式服务 (SCR) 来连接包之间的服务依赖关系。
例如,如果我需要访问 java.util.Dictionary 我可以说以下内容让 SCR 提供:
现在,我有多个可用的 Dictionary 服务,我想使用“name”服务属性(我只想要“name=myDictionary”)过滤它们。我可以使用代码(使用 ServiceTracker)来做到这一点,但我宁愿在 @scr 注释中指定过滤器。
java - 从 OSGi 包访问命令行参数
我有一个作为 OSGi 包集合运行的应用程序。我使用嵌入 Felix 框架的非常小的包装器来启动它。这个包装器的必要性让我有点恼火,因为它依赖于 Felix(而应用程序本身也可以在 Equinox 中运行),所以我想摆脱它,并使用默认的 Felix发射器。
包装器真正做的唯一一件事就是将命令行参数传递给启动的 OSGi 框架,以便那里的包可以对它们做出反应。请注意,它实际上并不解析参数,只是将 String[] 推送到我的应用程序中。
是否有标准方式(或至少是 Felix 标准方式)从包中访问命令行参数,以便我可以取消自定义启动器?
java - Felix/OSGi:如何使用不是 OSGi 服务的 SCR 组件?
Apache Felix 的 SCR 允许声明(通过注释或 XML)组件,然后将其实例化、连接到它们的依赖项并注册为 OSGi 服务。
也可以跳过服务注册部分,只让 SCR 创建组件(通过指定@scr.component,但省略@scr.service)。我在想这可能仅对依赖注入(在包中)有用,但是如何使用组件?可以使用scr.reference注入服务,但这不适用于非服务(或者是否)?
直接访问 SCR API 是可行的,但直接与容器服务对话有点违背 DI 的目的。
osgi - OSGi r4.1 中的 ServiceTracker
我正在使用org.osgi.util.tracker.ServiceTracker
(PrintableServiceTracker 实现 ServiceTrackerCustomizer 并在添加新服务时简单地打印)。
我在新的电子书“ OSGi in action ”中读到了“伪注册”,我想知道我是否必须明确地进行伪注册,或者框架是否会自动处理?
(ServiceTracker 是否会捕获已安装的 Printable 服务。是否会为每个预安装的 Printable 服务调用 ServiceTracker.addingService(ServiceReference))
java - Apache Felix:什么是扩展包?
Apache Felix 具有“扩展包”的概念。这似乎是一个有助于系统捆绑的捆绑。还为他们注册了一个特殊的 URL “felix://extensions/”。
我什么时候需要使用扩展而不是常规捆绑包?
是否有使用这种方法的捆绑包示例?
这是 Felix 独有的功能还是 OSGi 规范的一部分?
java - OSGi felix:可以在宿主应用程序和捆绑包之间共享一个类吗?
在我的宿主应用程序中,我尝试实现一个简单的 pushService,通过提供 set 和 get 方法,该服务将用于将名为 Vehicle 的类的实例传输到 OSGi 世界。为了能够使用该服务,我将服务接口和 Vehicle 类都导出到了一个 jar 文件中,并将该文件导入到应该使用该服务的包中。
每次我尝试在我的宿主应用程序中使用 Vehicle 类时,它实例化了 felix 框架和包,我得到一个链接错误。阅读以下博客条目(http://frankkieviet.blogspot.com/2009/03/javalanglinkageerror-loader-constraint.html)后,我明白了为什么会发生此错误。但我不知道如何解决我的问题。
是否可以在宿主应用程序和 OSGi 实例之间共享一个类?也许我必须使用反射而不是导入 jar 文件?我查看了那个库(http://code.google.com/p/transloader/),我不确定这个库是否能够解决我的问题......
BR,
马库斯
java - 为什么在 Apache Felix 中运行时 JAXB 找不到我的 jaxb.index?
它就在那里,在它应该被索引的包中。不过,当我打电话时
我得到一个 JAXBException 说
“my.package.name”不包含 ObjectFactory.class 或 jaxb.index
虽然它确实包含两者。
什么有效,但不是我想要的,是
来自其他人的这个问题出现在相当多的邮件列表和论坛上,但似乎没有得到答案。
我在 OpenJDK 6 上运行它,所以我得到了源包并将我的调试器放到了库中。它首先查找 jaxb.properties,然后查找系统属性,但均未找到,它尝试使用 com.sun.internal.xml.bind.v2.ContextFactory 创建默认上下文。在那里,异常被抛出(内部ContextFactor.createContext(String ClassLoader, Map)
),但我看不到发生了什么,因为源不在这里。
预计到达时间:
从 ContentFactory 的源代码来看,我在这里找到了,这可能是一段无法按预期工作的代码:
repository - 如何配置 Felix OBR 存储库列表?
有没有办法在 Felix 的config.properties
文件中指定多个 OBR 存储库?我确实可以在运行时添加一个存储库,但我必须在重新启动后这样做。
“Prefrences Service”没有帮助,似乎“Bundle Repository”没有使用它。
java - 如何使用自定义清单文件在 Eclipse 中构建 JAR?
我正在尝试在 Eclipse 中构建一个 Felix 包。这基本上包括让 Eclipse 创建一个 JAR(通过导出)并添加我的自定义清单文件,但是,我似乎无法让它工作。当我尝试导出 JAR 文件时,我的自定义清单文件显示在 JAR 中,但从未添加到 JAR (meta-inf) 中的正确位置。这会导致将另一个由 Eclipse 创建的默认清单文件添加到我的 JAR 文件中。
注意:我正在使用 Eclipse 的内置 JAR 导出工具并选择使用工作区中现有清单文件的选项。
我敢肯定有一些小细节被忽略了,但我有点难过。
谢谢你的帮助。
java - 开始使用 osgi + felix
我需要哪些Felix软件包才能开始使用?下载页面上有数不胜数的。
(ps 这个名字是对 Odd Couple + 的引用,与 OSGI 的“Oscar”参考框架形成对比?这是我在阅读了其中一个教程页面后想到的,我从中得到了笑声。)