问题标签 [osgi]

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 投票
2 回答
1530 浏览

communication - 你如何在 Eclipse 声明式服务和视图(ContentProviders)之间进行通信

假设您有一个带有各种视图的 Eclipse 插件,这些视图应该显示来自将数据推送到视图的某些 OSGi 包的数据。我不是让每个视图都与 OSGi 包通信,而是有一个中间 Facade 类,它充当视图的黑板并管理视图与其他 OSGi 包之间的通信——嗯,这就是理论。

问题的出现是因为 ui 包(带有视图和外观)使用声明式服务与另一个包(称为 DataStore)进行通信。由于 Data Store 从另一个源接收异步数据更新,因此它需要将内容推送到 Facade(以及其他捆绑包,如果它们可用)。OSGi 实例化 Facade 以满足对 DataStore 的 DS 配置的基数要求,但视图由 Plugin 的 IApplication 实现实例化。即使 IApplication 和 Facade 是同一个类,我也会得到两个彼此不认识的独立实例。

如何启用这些组件(插件应用程序、视图等和 OSGi 实例化外观)之间的通信?

0 投票
1 回答
551 浏览

java - db4o 和 OSGi - 重新启动后的空数据库

我在 OSGi 环境中使用 db4o 6.4.54 作为模型存储。每次我重新启动 OSGi 框架时,数据库似乎是空的,尽管文件在那里并且肯定不是空的。

我有以下配置:

一个核心包,它依赖于 db4o 提供的标准 db4o_osgi 包。一个 UI 包,它依赖于核心插件,从中获取模型。

核心包通过 openServer(String, 0) 方法创建内存服务器,然后为每个请求/线程创建单独的客户端。

问题是,每次创建 db4o 服务器时,查询都不会返回结果。

我尝试使用该服务,但它也没有工作。

我测试的下一步是将 db4o 直接包含到我的包中并且它可以工作(效果是 db4o 类由与模型对象相同的类加载器加载,我将其存储到数据库中)。db4o 论坛 [1] 中有一篇帖子,但它未能解释为什么会存在这个问题以及应该如何(正确地)解决它。我会继续我的调查,但我想知道是否还有其他人在我之前解决了这个问题?

0 投票
2 回答
4671 浏览

dependency-injection - OSGi/Felix 声明式服务:如何过滤要绑定的服务?

我正在使用 Apache Felix 及其声明式服务 (SCR) 来连接包之间的服务依赖关系。

例如,如果我需要访问 java.util.Dictionary 我可以说以下内容让 SCR 提供:

现在,我有多个可用的 Dictionary 服务,我想使用“name”服务属性(我只想要“name=myDictionary”)过滤它们。我可以使用代码(使用 ServiceTracker)来做到这一点,但我宁愿在 @scr 注释中指定过滤器。

0 投票
3 回答
10194 浏览

maven-2 - Maven:OSGI、包和多模块项目

我目前正在开发一个基于 OSGi 的应用程序(使用 Equinox),方法是尝试对我在 OSGi+Equinox 上找到的网络教程进行 mavenize。在这个项目中,有一些依赖于其他包的包(quote-service 依赖于报价)。编译阶段确实成功,但打包阶段没有。Maven抱怨以下内容:

我确实理解这个问题,但不知道如何使它工作。这是报价的 pom :

和报价的捆绑清单:

然后是报价服务的 pom :

最后是报价服务的清单:

有什么不对 ?先感谢您 !

0 投票
9 回答
4277 浏览

osgi - OSGi 如何管理在不同 JVM 中运行的组件的交互?

我一直试图在不阅读整个规范的情况下更多地了解 OSGi 的更广泛的图景。与许多事情一样,对OSGi 的实际介绍可能是由从事它工作了十年的人编写的,也许不适合将自己置于对它一无所知的人的心态中 :-)

看着 Felix 的例子DictionaryService,我真的不明白发生了什么。OSGi 是 JVM 的一个独特实例,您可以在其中加载可以相互找到的捆绑包?

显然不仅 如此,因为 StackOverflow 上的其他答案明确表明 OSGi 可以解决包含部署在不同 JVM 中的模块的分布式系统的依赖问题(加上常见问题解答一直在谈论网络)。

在后一种情况下,在一个 JVM 中运行的组件如何与单独 JVM 中的另一个组件交互?这两个组件能否像在同一个 JVM 中运行一样“使用”彼此(即通过本地方法调用),以及 OSGi 如何管理跨网络的数据编组(Serializable例如,您是否必须使用)?

或者组件作者是否必须使用其他一些不同的机制(由 OSGi 提供或自己编写)在远程组件之间进行通信?

非常感谢任何帮助!

0 投票
3 回答
1057 浏览

osgi - 什么是典型的 OSGi 生命周期?

在开发和部署基于 OSGi 的系统时,我想深入了解工业中使用的生命周期。
我的主要关注点是部署阶段,在开发阶段创建版本并打包捆绑包之后。可能执行的具体测试程序和集成方法。
具有一些低级别详细信息的非常高级帐户将非常有帮助。
谢谢你。

0 投票
1 回答
4494 浏览

java - 如何动态替换 Eclipse 插件的类加载器?

我正在开发一个适合客户端-服务器模型的 Eclipse 插件。它是一个商业项目,因此我们无法为我们通过插件支持的各种数据库重新分发 JDBC 驱动程序。

所以我开发了一个首选项页面来允许用户定位 jars,并有一个简单的发现机制,它遍历 jar 文件中的类,加载每个类以验证它是否实现了 java.sql.Driver 接口。这一切都很好。

但问题是我正在使用 Hibernate。Hibernate 使用 Class.forName() 来实例化 JDBC 驱动程序。

如果我尝试使用以下内容,我会得到ClassNotFoundException.

如果我尝试按如下方式自己创建驱动程序,我会得到一个 SecurityException。

编辑:我不确定这是最好的选择,但我采取了实现自己的方法,ConnectionProvider这允许我使用实例化驱动程序Class.forName(),然后使用Driver.connect()而不是打开连接DriverManager.getConnection()。它非常基本,但在我的特定用例中我不需要连接池。

configure()方法如下:

getConnection()方法如下:

0 投票
1 回答
678 浏览

jboss - 你能在 OSGi 中运行 EJB 2.1 bean 吗?

我有一个使用 EJB 2.1 会话和实体 bean 的 J2EE 1.3 应用程序。目前,此应用程序在 JBoss 上作为 EAR 文件运行。由于 OSGi 提供的所有好处,我想切换到 SpringSource dm Application Server。

有谁知道是否有可以充当 EJB 容器的 OSGi 包?OpenEJB可以做到这一点吗?

0 投票
5 回答
3997 浏览

java - 用纯 java 拆分包

OSGi 存在拆分包的问题,​​即同一个包但托管在多个包中。

是否存在拆分包可能会在纯 java(没有 OSGi)中造成问题的边缘情况?

只是好奇。

0 投票
4 回答
5808 浏览

java - 从 OSGi 包访问命令行参数

我有一个作为 OSGi 包集合运行的应用程序。我使用嵌入 Felix 框架的非常小的包装器来启动它。这个包装器的必要性让我有点恼火,因为它依赖于 Felix(而应用程序本身也可以在 Equinox 中运行),所以我想摆脱它,并使用默认的 Felix发射器。

包装器真正做的唯一一件事就是将命令行参数传递给启动的 OSGi 框架,以便那里的包可以对它们做出反应。请注意,它实际上并不解析参数,只是将 String[] 推送到我的应用程序中。

是否有标准方式(或至少是 Felix 标准方式)从包中访问命令行参数,以便我可以取消自定义启动器?