问题标签 [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.

0 投票
1 回答
731 浏览

java - OSGI 捆绑 .bnd 文件和冲突的导入包语句

我继承了一个具有导入 !javax 的 .bnd 文件。,如果我取出该语句,我的程序会产生运行时错误。我目前需要将 JavaHelp 添加到我的应用程序中,该应用程序位于 javax.help 下。. 当我的 .bnd 中有这两个导入并且我使用 JavaHelp 中的一个类时,它会为特定类生成一个 ClassNotFoundException,例如 javax.help.JHelp。有没有办法处理这种情况,我觉得卡住了。

0 投票
3 回答
139 浏览

java - 未通过向组件添加服务引用调用 Service.FindHook 事件

今天我在 OSGi Hooks 上做了一点工作,特别是服务FindHookEventListenerHook服务。我想尝试代理服务。工作正常,我的EventListenerHook服务被代理了。但是我意识到,FindHook如果服务将通过使用(Bnd 样式)注释相关setXXX方法来获取服务实现的引用,则不会调用该事件。@Reference也许这不是注释的问题,但一般来说是DS。

这很糟糕,因为注册了两项服务,一项没有代理,一项已代理。我只想从代理那里获得参考。一般来说,如果没有 DS,你可以通过调用获取引用,BundleContext.getServiceReference(java.lang.Class<S> clazz)并且事件FindHook.find将被调用,你可以在其中决定ServiceReference要返回哪个。

当我使用类似 DS 的方法(对我来说:Bnd 注释@Reference)时,将执行什么样的流程?正如我在上一节中所描述的:我想决定应该引用哪些服务。

0 投票
1 回答
317 浏览

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?

提前感谢您的帮助。

0 投票
1 回答
2083 浏览

java - 在抽象类中提供 DI 方法

在大多数情况下,我有很多组件具有要由 OSGi 声明式服务注入的相同类。这些服务将用于执行一些对所有派生组件都相同的逻辑。因此,为避免重复代码,最好使用抽象类。是否有可能将 DI 引用方法(设置/取消设置)移动到抽象类。我正在使用Bnd。

例如:

我想将 setterServiceC和方法移动executeSomethingDependendOnServiceC()到抽象类。但是它在 OSGi 中与 Bnd 注释的关系如何。只是用@Component 注释类是行不通的,因为A并且D会创建抽象类的不同实例,而@Component 也正在创建一个实例。

也许有人遇到同样的问题,并给我一些建议,解决方法可能是什么样子。至少一个最佳实践解决方案也可以:)

0 投票
1 回答
8887 浏览

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 插件。

问候,谢尔斯基

0 投票
1 回答
792 浏览

ant - bndwrap 蚂蚁任务不工作

我正在尝试为最新版本的 jTDS 创建一个 OSGi 包装器。我正在尝试将包装过程添加到现有的 jTDS 构建过程(基于 Ant)。我已经下载了最新的 bnd.jar 并将以下内容添加到 jTDS build.xml:

我还定义了一个非常简单的 bnd 定义:

当我dist在 Ant 中执行任务时,它应该使用正确的 OSGi 清单创建一个 JAR。它正在创建另一个 JAR,但清单与原始 JAR 相同。

如果我直接对 bnd JAR 执行相同的包装:

我得到了正确的 OSGi 清单。

Ant 构建期间出了什么问题?

0 投票
1 回答
2755 浏览

java - 使用 maven-bundle-plugin 索引 JAR

META-INF/INDEX.LIST我正在尝试使用maven-bundle-plugin2.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

0 投票
2 回答
4020 浏览

java - 如何使用 Maven Bundle Plugin (BND) 从存在于另一个依赖项中的依赖项中排除命名包?

我有两个依赖项:

两个依赖导出包:

  • org.postgres

使用 Maven Bundle Plugin 的wrap命令时,如何排除从 postgis-jdbc导出org.postgres ?

0 投票
1 回答
1075 浏览

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 文件。

我终于解决了我面临的问题。

  1. 由于我将我的包作为 maven 项目导入到 STS 中,因此我必须向其中添加 Virgo 方面。一旦我更新了我的 Maven 配置,它就会搞砸我的项目,并且我收到以下错误:

    /li>
  2. Appart from my (shitty) maven configuration,我发现自己无法将我的项目添加到 virgo 服务器,这无休止地告诉我

    /li>

有人有任何线索吗?

0 投票
1 回答
3108 浏览

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