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

java - Netbeans中的OSGi,检索服务时出现ClassCastException

我有一个 ClassLoader 问题。由于我是一个 osgi 新手,希望答案不是那么难:)

我认为这与编译与运行时库有关。 在 Netbeans 6.7.1 项目属性中,编译时库总是传播到其他类别。所以我无法区分那里。

编译 FelixHost 时使用下一个 jar

  • 费利克斯罐子
  • osgi-core.jar
  • osgi-compendium.jar
  • osgi.service.obr-1.0.2.jar

但是在运行时,框架会为 OBR 加载一个实现。此 OBR 捆绑包还包含接口定义。我认为这就是为什么有一个 classCastException ..

我实际上希望 FelixHost 与 OBR 一起进行一些初始配置。

欢迎任何想法。

0 投票
3 回答
2807 浏览

java - 配置Equinox修改“本地包缓存”的管理

关于上一个问题,如何让 OSGi 通过 Config Admin 重用您的配置,我仍在尝试在 Equinox Framework 中解决这个问题。

帕沃尔·尤霍斯写道:

Equinox Config Admin (org.eclipse.equinox.cm) 将配置数据存储在框架提供的持久存储区域中。这恰好是 Equinox 默认的“本地包缓存”目录。

所以我阅读了这个主题,发现 Equinox 有几个运行时选项(除其他外,osgi.configuration.area)。

我想要更改配置,以便不会删除或清除本地包缓存,因此下次我将运行框架时,将使用最后输入的配置(对于任何包)。

0 投票
1 回答
3241 浏览

maven-2 - 如何将多个 OSGi 捆绑包与 BND / Maven-BND-plugin 合并?

我在我的应用程序中使用了一些现成的 OSGi 包,并希望将它们与尚不兼容 OSGi 的其他包重新打包到一个新包中。

典型的例子是 EclipseLink,它可以作为几个 OSGi 包提供,其中大部分是可选的,具体取决于您想要做什么。我想选择那些与我相关的包,添加数据库驱动程序(例如 MySQl JDBC 连接器)并将它们重新打包成一个更易于部署的新包。

我正在使用 Apache Felix 的 maven-bundle-plugin。我建立了一个没有源代码的新Maven项目,添加了四个eclipselink和mysql连接器作为依赖项并尝试了以下内容:

  • 使用<Embed-Dependency>and<Embed-Transitive>指令将所有依赖项包含在一个包中。问题:当插件重写清单时,需要来自 eclipselink 包的可选依赖项(例如 javax.mail.internet)。原始捆绑包在清单中包含“分辨率=可选”,因此没有它也可以正常工作。
  • 使用manifest插件和jar-with-dependencies程序集的目标,但这给了我基本相同的结果,只是需要更多的工作。
  • 使用了bundleall插件的目标,这不是我想要的,因为它再次创建了单独的包。更糟糕的是,因为现在这些包里面没有它们的依赖项。

我将面临 Struts 2 的类似问题。我不会对此感到痴迷,只是使用一大堆单独的第三方捆绑包,但如果我可以更整齐地打包它们,我真的很喜欢至。我知道 OSGi 的一个要点是模块化,因此创建大包会破坏这一点,但我觉得如果您的模块无论如何都是紧密耦合的,那么您不妨将它们放入单个包中。

当然,我可以手动调整清单,但我绝对不想这样做。

0 投票
2 回答
2611 浏览

jpa - 在 OSGi 环境中,类路径和类加载器是如何设置的?

我对 OSGi 中的类可见性感到困惑。我正在运行 Apache Felix 并加载以下包:

  • 来自 eclipselink的antlr, asm,jpa和bundlescore
  • javax.persistence1.99的 OSGi-fied jar
  • 带有com.mysql.jdbc驱动程序的 OSGi-fied jar
  • 我自己的一个包,其中包含带注释的实体类和一个persistence.xml
  • 我自己的另一个捆绑包Persistence.createEntityManagerFactory(String, Map)

现在,我很困惑的是哪个包必须能够看到 MySQL 驱动程序。我认为这将是创建 EntityManagerFactory 的包,但是当我在该清单中导入时出现 ClassNotFound 错误。接下来,我尝试从 eclipselinkjpa包的清单中导入它,但又出错了。只有当我从包含持久性单元(实体类和)的包的清单中导入它时persistence.xml,它才能工作。

所以,似乎数据库驱动程序是由类加载器查找 PU 包的,但这对我来说没有意义。这是怎么回事?

我似乎无法为此找到一个简单的文档。这些幻灯片提供了一些提示,但并不十分全面。

0 投票
13 回答
134112 浏览

java - 阅读我自己的罐子清单

我需要阅读Manifest提供我的课程的文件,但是当我使用时:

MANIFEST从第一个.jar加载到 Java Runtime 中。
我的应用程序将从小程序或 webstart 运行,所以我猜
我将无法访问我自己的文件。.jar

我实际上想Export-package从启动 Felix OSGi 的 中读取属性.jar,因此我可以将这些包公开给 Felix。有任何想法吗?

0 投票
1 回答
883 浏览

apache - Apache Felix Bundle Repository - 从另一个包调用

我有一个简单的测试程序,旨在使用 Apache Felix Bundle Repository 捆绑服务,但是我无法通过 eclipse 配置它。

我使用捆绑包的 jar (org.apache.felix.bundlerepository-1.4.0.jar) 作为引用库,并将其添加到清单中的类路径中。

当我尝试启动我的包时,它给出了错误:

java.lang.ClassCastException: org.apache.felix.bundlerepository.RepositoryAdminImpl cannot be cast to org.apache.felix.bundlerepository.RepositoryAdmin

我无法将 org.osgi.service.obr 添加到我的包中的导入包列表中(因为它没有解决),我认为这是问题的原因。

有任何想法吗?

谢谢

0 投票
3 回答
280 浏览

java - 让 Eclipse OSGI 激活器相互继承是个好主意吗?

如果你有一个通用的 eclipse/osgi 代码平台,你可以在上面构建各种产品,你可以/应该从通用代码继承激活器吗?

例如

org.test.common.PluginActivator
org.test.common.ui.UIPluginActivator

org.test.product1.Product1PluginActivator
org.test.product1.ui.Product1UIPluginActivator

org.test.product2.Product2PluginActivator
org.test.product2.ui.Product2PluginActivator

我希望所有 UI 激活器都继承自通用激活器,非 UI 激活器也一样。启动方法都将调用超级......但是我想知道这是否是糟糕的 osgi/bundle 实践或可能导致问题。

有人对此有任何想法/意见吗?

0 投票
14 回答
27480 浏览

java - 捆绑的激活器无效

我正在尝试在 eclipse 中创建一个简单的插件。当我运行应用程序时,我在日志文件中看到了这个错误:

org.osgi.framework.BundleException : 用于 bundle org.xy 的激活器用于 bundle org.xy 的激活器无效。

您对此错误有任何想法吗?

0 投票
3 回答
2349 浏览

java - OSGI 环境中单例的迁移解决方案

我在 Java EE 环境中工作,其中每个应用程序都在自己的 war 文件中。在每个应用程序 war 文件的 WEB-INF/lib 中都有一个由所有应用程序共享的公共 jar。这个常见的 jar 包含几个 Singleton,可以从代码中的许多点访问。由于战争文件的边界,每个应用程序都有自己的单例实例。这就是我们今天的操作方式,因为我们想在每个应用程序中以不同的方式配置一些单例。

现在我们正在转向一个 OSGi 环境,因为每个包都有自己的类加载器,所以这个解决方案将不再工作,所以如果我尝试从包“appA.jar”或从包访问驻留在包“common.jar”中的 MySingleton bundle "appB.jar" 我会得到相同的实例。

请记住,我“想要”每个捆绑包有一个不同的单例实例。(听起来很讽刺)

现在我意识到理想的解决方案是修复代码不依赖于那些单例,但是由于时间紧迫,我想知道你们是否可以建议某种迁移解决方案,让我可以使用捆绑范围的单例所以每个包都可以配置。

0 投票
2 回答
248 浏览

eclipse - 下游插件是否可以使用外部化的 plugin.xml 字符串?

如果我有插件通用,插件 A 和 B 作为单独的插件/产品,两者都取决于插件通用。

在插件通用中,我将 plugin.xml 中的字符串外部化,这给了我 %bundle-vendor = "My Company Name"。

在下游插件 A 和 B 中,我可以使用常见的 bundle-vendor 属性作为 vendor. 我尝试在公共插件 id 前面加上它,但它没有用。这应该可能吗?