问题标签 [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 投票
3 回答
3578 浏览

rest - OSGi JAX-RS 和 bnd 声明式服务

我想将我的 EE 应用程序迁移到 OSGi。我的应用程序由业务库、数据库 JPA/Entities 和一个 REST/WS 接口组成。它还有一个网络客户端。

我首先对结构进行原型设计,并使所有接口和包以 OSGi 干净的方式相互通信。我想尽可能使用干净的规范,而不需要任何特定的供应商或框架。

我正在使用 bnd maven 插件来生成清单和声明性服务。我想使用注入从我的其余资源调用 OSGI 服务(在另一个包上),如下所示:

我可以用 bnd 注释资源@Component并且可以@Resource注入吗?一切正常,但服务始终为空。

应该如何为 BND 声明我的捆绑包以使其成为 web/wab 包?

我使用 Maven 包:

带 bnd 指令

0 投票
1 回答
1014 浏览

java - Maven m2 存储库:使其成为 OBR

我的 Maven 存储库有问题,我正在尝试让 Eclipse 的 BNDTools 插件与我的本地 m2 存储库一起使用。但它声称我的 m2 存储库不是 OBR 存储库,因此不能用于 OBR 解析。

显然,Maven-Bundle-Plugin 应该生成 OBR 数据,但我们(团队)注意到 repository.xml 没有更新存储库中的所有文件,因此我们尝试了使用 apache karaf Cave 的解决方法来重建XML 文件,但我担心这是我出错的地方。

我意识到这似乎是一个不合逻辑的解决方法,但我向您保证,在我们拥有的设置中,这似乎是最简单的前进方式。

所以我的问题是:我怎样才能用所有 OBR 数据重建我的 repository.xml 文件。否则,如何将我的 m2 存储库设置为符合 OBR 的存储库。

提前谢谢各位。

0 投票
2 回答
456 浏览

osgi - Bnd @Attribute 注解有什么用?

查看 bndlib-1.50.0 中的包中的注释时, http ://www.aqute.biz/Blog/20091020或http://www.aqute.biz/Bnd/Components :aQute.bnd.annotation.component中没有列出一个。它是干什么用的?@Attribute

0 投票
1 回答
93 浏览

osgi - 找出 OBR 认为需要捆绑包的原因

有没有一种简单的方法来理解为什么 Bndtools OBR 分辨率决定它需要一个特定的包来满足运行要求?在我的特殊情况下,我有所有org.slf4j.*的包-runsystempackages,但它仍然坚持包括slf4j-api.

0 投票
4 回答
5487 浏览

jenkins - 在 jenkins 上持续部署基于 OSGi 的应用程序

在花了几个小时试图了解如何在基于 OSGi 的应用程序的情况下进行持续部署之后,我终于在 stackoverflow 上提出了我的第一个问题,希望能找到一些迹象表明我可能做错了什么或错过了什么——不知何故感觉走错路了。。。

这就是我想要实现的目标:

  1. 构建一些包并将它们安装到 maven 存储库(这里没问题,使用 bnd)

  2. 现在有了构成我的应用程序的所有包(通过所有测试等),我想部署和运行应用程序,即使用这些包启动一些 OSGi 框架。

  3. 开始不是问题——“mvn pax:provision -Dframework=equinox”可以解决问题。我的应用程序启动了 jetty,因此很容易通过浏览器进行验证以查看一切是否正常(除了所有测试)

  4. 但是,现在,尝试“连续”,下次我想应用这个过程时,我真的应该确保首先关闭我的应用程序的运行实例(至少释放正在使用的端口)。所以,要重新运行一切,我必须先关闭旧的安装。

这就是我的问题开始的地方:有什么可以帮助我解决这个问题吗?我知道有maven-deploy-plugin,但这似乎只有在将一些 WAR/EAR 文件部署到一些标准应用程序容器中时才有用(似乎不需要重新启动它)。

我真的只需要运行一些脚本来启动OSGi 环境——然后,下一次,在我再次启动它之前优雅地关闭它。用tomcat、jetty、jboss之类的,有一些shutdown.sh脚本或者mvn jetty:stop指令,但是真的要自己写那种脚本吗?这就是我认为我开始走错路的地方,我猜肯定有人在我之前遇到过这些问题并解决了它们;)

我知道我可以以某种方式尝试使用JMX或使用telnet 控制台来访问正在运行的实例以发出“stop 0”命令,但这感觉不对

从詹金斯开始的进程应该编译/构建/部署项目,但我猜不是启动长时间运行的线程,所以我必须以某种方式启动一些“外部”进程,我想在下次再次尝试时首先杀死它。

有任何想法吗?也许我错过了什么?提前感谢您对此的任何意见!

0 投票
2 回答
3837 浏览

deployment - WebLogic 和 OSGi

有没有办法在 Weblogic Application Server 中运行 OSGi 容器?我知道它可以与 JBoss、Glassfish 一起使用,并且有可能将 Equinox servlet 桥添加到您的 OSGi 项目中(桥的实现太旧了)。但我想要类似于 JBoss/Glassfish 功能的东西,因为已经有 OSGi 实现,所以部署 OSGi 环境非常容易。我发现的大多数文章都很旧,而且没有更近期的了。有人可以提供提示或更好的链接吗?

也许 Bnd 可以为我创建一个 .war 文件,但我怎样才能实现它。我读到有可能。例子会很棒!

编辑

仅适用于仍在调查该案的人。从 12.1.2 版开始,Weblogic 支持开箱即用的 OSGi。

0 投票
0 回答
74 浏览

bnd - 嵌入除类型包之外的依赖项

在 POM 父级中,我定义了构建捆绑包的所有通用规则。在嵌入依赖指令中,我想写:

“嵌入所有具有编译或运行时范围的依赖项,除了 my-api 工件和捆绑类型的依赖项。”

它适用于范围artifactId约束,但type!=bundle似乎不起作用。

所有这些都是为了避免必须指定提供的范围来捆绑依赖项。

任何想法 ?

谢谢

0 投票
1 回答
2089 浏览

java - 如何使用 Apache Felix 在 OSGi 中归档 AOP

我目前正在开发一个 OSGi 项目,其中某些部分非常适合 AOP 编程。没有很多 AOP 与 OSGi 结合的经验,我想知道如何在 OSGi 环境中最好地做 AOP?我已经阅读了一些关于这个问题的文章,但没有找到适合我的解决方案。例如,有一个 AspectJ 的 Equinox Incubator 项目,但最后一次构建是在 2008 年。但是由于我使用的是 Apache Felix 和 Bnd(tools),所以我想避免使用 Equinox 的某些东西。顺便说一句,编织过程的一个要求是它应该在编译时,也可能在稍后的加载时。此外,我正在使用 Ant 和 Bnd 来构建我的包。因此,如果我也可以将 Aspectj 集成到这个构建过程中,那就太好了。

希望有人可以分享这样一个用例的经验。

编辑

到目前为止的总结:

  • 正如Christian Schneider在他的回答中提到的那样,有可能使用Spring AOP(但可惜不是我要找的)
0 投票
2 回答
234 浏览

java - OSGi/BND:根据操作系统的不同要求

我为 OSGi 创建了一个命令组件并使用 Apache Felix Shell。一个命令打开一个启动 SWT UI 的新线程。

在 BND 配置中,构建和运行该组件需要 SWT Bundle。现在的问题是,每个开发人员都必须更改配置并为他们的操作系统包含 SWT Bundle。此外,对于每个操作系统,都需要一个其他打包的 Bundle,唯一的区别是 jar 清单中的一行,需要其他 Bundle 才能启动。

BND 或 OSGi 中是否有任何技巧,我可以在其中设置依赖于当前运行系统的构建或运行依赖项?

像“org.eclipse.swt.{OS}.{WS}.{ARCH}”而不是“org.eclipse.swt.win32.win32.x86_64”?或者至少我可以在配置中要求特定的操作系统吗?因此,如果用户使用了错误的包,它会显示一个很好的错误而不是 ClassNotFound 异常?

另一个问题(http://stackoverflow.com/questions/2706222/create-cross-platform-java-swt-application/5784073#5784073)中描述的解决方案对我不起作用或更好我不知道这是怎么回事可以用 BND/OSGi 完成。

任何的想法?

0 投票
1 回答
329 浏览

java - jh.jar (JavaHelp) 上的 bnd 换行不起作用

我正在使用 bnd wrap,这是我之前使用过多次将普通 jar 文件转换为 OSGI 包的工具。我在使用 JavaHelp 的 jh.jar 时遇到问题。我只收到一条警告,“1:多余的导出包说明:[com, com.sun, com.sun.java.help, com.sun.java, javax]”。我希望警告不会终止该进程,但之后我没有看到 OSGI 包,我的 jh.jar 文件大小没有变化,清单看起来也没有变化。有人知道发生了什么吗?其他人应该很容易尝试自己 bnd 包装 jh.jar。

我正在运行这个命令: