问题标签 [bnd]
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.
java - OSGI 捆绑 .bnd 文件和冲突的导入包语句
我继承了一个具有导入 !javax 的 .bnd 文件。,如果我取出该语句,我的程序会产生运行时错误。我目前需要将 JavaHelp 添加到我的应用程序中,该应用程序位于 javax.help 下。. 当我的 .bnd 中有这两个导入并且我使用 JavaHelp 中的一个类时,它会为特定类生成一个 ClassNotFoundException,例如 javax.help.JHelp。有没有办法处理这种情况,我觉得卡住了。
java - 未通过向组件添加服务引用调用 Service.FindHook 事件
今天我在 OSGi Hooks 上做了一点工作,特别是服务FindHook
和EventListenerHook
服务。我想尝试代理服务。工作正常,我的EventListenerHook
服务被代理了。但是我意识到,FindHook
如果服务将通过使用(Bnd 样式)注释相关setXXX
方法来获取服务实现的引用,则不会调用该事件。@Reference
也许这不是注释的问题,但一般来说是DS。
这很糟糕,因为注册了两项服务,一项没有代理,一项已代理。我只想从代理那里获得参考。一般来说,如果没有 DS,你可以通过调用获取引用,BundleContext.getServiceReference(java.lang.Class<S> clazz)
并且事件FindHook.find
将被调用,你可以在其中决定ServiceReference
要返回哪个。
当我使用类似 DS 的方法(对我来说:Bnd 注释@Reference
)时,将执行什么样的流程?正如我在上一节中所描述的:我想决定应该引用哪些服务。
maven - 通过 BND 将 Maven POM 放入 OSGi 包装器?
我有一个想在 OSGi 环境中使用的第三方 JAR,但它没有适合 OSGi 的 MANIFEST.MF。所以,我使用 BND(嗯,BNDTools)来包装它。这很好用,但是:
我还希望能够轻松地将它与 Maven 一起使用(它也没有设置),所以我想包含一个描述其依赖关系的 Maven POM。有没有办法通过 BND 做到这一点?这是我尝试过的:
我查看了各种 Mavenized JAR 的布局,发现它们似乎将 POM 包含在 META-INF/maven/groupId/artifactId 中。例如:
所以,我做了一个 POM 并把它放在这样的地方,然后修改 bnd.bnd 有:
但是,生成的 JAR 不包含该文件。
我认为(但不是 100% 肯定)我可能误读了 BND 关于“-include”的文档——看起来它可能是为了在生成的 MANIFEST.MF 中包含额外的清单指令,而不是在 JAR 中包含额外的文件。
但无论如何,有没有办法使用 BND 来完成我想做的事情?或者我是否必须使用另一个重新包装程序来使用 POM 创建一个 JAR,然后使用 BND 重新包装它而不是使用它来重新包装原始 JAR?
提前感谢您的帮助。
java - 在抽象类中提供 DI 方法
在大多数情况下,我有很多组件具有要由 OSGi 声明式服务注入的相同类。这些服务将用于执行一些对所有派生组件都相同的逻辑。因此,为避免重复代码,最好使用抽象类。是否有可能将 DI 引用方法(设置/取消设置)移动到抽象类。我正在使用Bnd。
例如:
我想将 setterServiceC
和方法移动executeSomethingDependendOnServiceC()
到抽象类。但是它在 OSGi 中与 Bnd 注释的关系如何。只是用@Component 注释类是行不通的,因为A
并且D
会创建抽象类的不同实例,而@Component 也正在创建一个实例。
也许有人遇到同样的问题,并给我一些建议,解决方法可能是什么样子。至少一个最佳实践解决方案也可以:)
java - 如何从头开始为捆绑包使用 org.apache.felix.scr 注释?
我已经开始为 apache felix 开发一个包,并使用 ops4j pax 插件进行了开发。
我已经创建了项目结构,pax-create-project
并在其中做了正常的pax-create-bundle
. 然后,您将获得使用 maven 构建整个事物的初始项目结构。这里重要的部分是,你的包有它自己的 pom( bundlename/pom.xml
) 和 bnd 文件( bundlename/osgi.bnd
),但是配置maven-bundle-plugin
已经在poms/compiled/pom.xml
. 捆绑元数据配置在下,poms/compiled/pom.xml
但标准激活器配置在上述osgi.bnd
文件下。bnd 文件中的默认值为Bundle-Activator: ${bundle.namespace}.internal.ExampleActivator
.
现在我想开始使用注释,org.apache.felix.scr
所以我将它包含在依赖项下的捆绑包自己的 pom 中:
我为服务创建了我的界面:
以及带有以下注释的实现org.apache.felix.scr
:
osgi.bnd
为了启动组件,我需要在文件中放置什么?我不得不删除上面提到的默认条目,因为我不再使用 BundleActivator。
现在问题来了:我需要对上述任何文件做什么才能mvn clean install pax:provision
启动一个 felix 环境来启动我的包并让我看到任何打印输出?我已经查看了我正在启动的 Apache 日志服务的日志输出,它只是告诉我:
任何提示都非常感谢。或者链接,我已经搜索了几个小时来找到一个完整的指南来使用 scr 和捆绑的 maven 插件。
问候,谢尔斯基
ant - bndwrap 蚂蚁任务不工作
我正在尝试为最新版本的 jTDS 创建一个 OSGi 包装器。我正在尝试将包装过程添加到现有的 jTDS 构建过程(基于 Ant)。我已经下载了最新的 bnd.jar 并将以下内容添加到 jTDS build.xml:
我还定义了一个非常简单的 bnd 定义:
当我dist
在 Ant 中执行任务时,它应该使用正确的 OSGi 清单创建一个 JAR。它正在创建另一个 JAR,但清单与原始 JAR 相同。
如果我直接对 bnd JAR 执行相同的包装:
我得到了正确的 OSGi 清单。
Ant 构建期间出了什么问题?
java - 使用 maven-bundle-plugin 索引 JAR
META-INF/INDEX.LIST
我正在尝试使用maven-bundle-plugin
2.3.7构建一个具有索引 () 的包。
我的插件配置看起来像这样
但META-INF/INDEX.LIST
不会出现在 JAR 中。我试着用
但这将失败
这并不奇怪,因为META-INF/INDEX.LIST
它不在 Maven Archiver 中target/classes
而是由 Maven Archiver 动态生成的。
编辑 1
当我使用jar
而不是bundle
包装时,索引就在那里。
编辑 2
我正在使用 Maven 3.0.4
java - 如何使用 Maven Bundle Plugin (BND) 从存在于另一个依赖项中的依赖项中排除命名包?
我有两个依赖项:
两个依赖导出包:
- org.postgres
使用 Maven Bundle Plugin 的wrap命令时,如何排除从 postgis-jdbc导出org.postgres ?
osgi - OSGi 和 Virgo 工具:无法添加 maven 项目(使用 bnd maven 插件)
我是 OSGi 的新手,只编写了几个包并手动部署它们。我的一些朋友告诉我有关 Virgo 和 Virgo 工具的信息,它们允许您自动部署使用 eclipse 管理的包。
我目前正在尝试设置所有这些。我有 virgo-tomcat-server-3.5.0.RELEASE,以及 virgo 工具 1.0.0,所有这些都安装在 Spring Tool Suite 3.1.0.RELEASE 上(如果你不知道,最后一个包括m2eclipse 插件)。
我的包是一个 Maven 项目。它使用 bnd 插件,这是它的配置
你可以看到我只导出了一个包。我还尝试让 m2eclipse 在 eclipse 编译我的类时动态生成我的 manifest.mf 文件。
我终于解决了我面临的问题。
由于我将我的包作为 maven 项目导入到 STS 中,因此我必须向其中添加 Virgo 方面。一旦我更新了我的 Maven 配置,它就会搞砸我的项目,并且我收到以下错误:
/li>Appart from my (shitty) maven configuration,我发现自己无法将我的项目添加到 virgo 服务器,这无休止地告诉我
/li>
有人有任何线索吗?
maven - 如何 OSGFy 库
我正在开发一个项目,它是集成项目,我们正在使用 Apache Camel 和 Apache Karaf。在项目中,我需要使用Jira REST Java 客户端库。
所以我已经阅读了很多关于如何将非 OSGI 库包装到 OSGI 包的各种文章和线程,但我真的不确定我是否做对了。
所以,我创建了一个 POM 文件,它依赖于所需的库。做了一个包,尝试部署到 Karaf,当然,Karaf 抱怨缺少包。
所以,我找到了相应的 maven 依赖项,添加了它,包进入<Import-Package>
和依赖项进入<Embed-Dependency>
.
另一轮,部署,查找依赖项,添加,......一次又一次,直到 Karaf 对捆绑包很好。
这真的正确吗?在我看来这很疯狂,所以我想我没有像往常一样得到它:)
最后,我的工作计算机上的包稳定了,我快速检查并回家,在那里我继续但是,奇怪的是,相同的 POM / 包,在我的个人计算机上编译不工作,再次抱怨缺少包,但是这一次,这个包肯定在 POM 文件中,并且肯定是嵌入到包中的,我可以在那里看到它。
这次丢失的包是 org.apache.commons.codec。
所以,现在我很困惑,怎么了:(
很漂亮,伙计们,帮帮我。谢谢!
POM 文件很长,所以我想链接更好: http: //pastebin.com/j5cmWveG