问题标签 [equinox]

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 回答
3611 浏览

eclipse - Eclipse 3.5 可以发现插件目录中的所有包吗?

简单的用例:使用简单的脚本组装一个 Eclipse 产品,只需将包转储到插件目录中。这曾经适用于 3.3 - 3.5 已损坏:我的应用程序无法启动,因为找不到应用程序插件。

问题:解决这个问题的最简单方法是什么?这似乎是我整个升级过程中唯一的痛苦。


尝试:我想这对 P2 来说是一个禁忌:它改为维护 bundles.info 文件,这可能非常聪明..对我来说有点太聪明了。

我的一些想法:

  1. 我可以完全跳过 P2 并回到简单的旧的、简单的 -dirty- 发现机制吗?
  2. 我可以将插件目录设置为“监视目录”吗
    • 看起来我需要为此使用 p2.reconciler ..哦等等,它已经被弃用了:-(错误 251561 ..(感谢 VonC 的指针)
  3. config.ini 中的这个旧设置还能工作吗?(现在被“simpleconfigurator”取代)osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@start
  4. 我应该打电话给(p2)导演吗?“请拿起我的插件” :)
  5. 我会为此避免使用 dropin 文件夹——这对最终用户来说更是如此。
  6. 如果可能的话,我会避免弄乱 bundles.info。

我还不关心我的产品中的所有这些智能功能——实际上用户根本不使用内置的更新机制。所以我想亲吻(即:只是为了启动),并在需要时添加更多高级支持。

我在Eclipse 论坛上问过这个问题,但还没有答案,所以真的很感激一些启发。另外,请随时纠正我的假设 - 我刚刚阅读了P2 文档,有时看起来令人困惑。谢谢!


回答:实际上,上面的选项 3 似乎仍然有效 - 感谢Francis确认这一点!(它最初不起作用,但这可能是由于缺少一些部门造成的)。我现在唯一的问题是,一些 Eclipse 包实际上需要 simpleconfigurator。所以我想知道换掉它是否会导致问题。

0 投票
6 回答
2695 浏览

java - OSGi 中的服务引用

一旦从捆绑上下文中检索到 OSGi 服务的实例,它是否会在服务停止时失效?

我最初的测试表明,即使在服务包停止后也可以使用服务实例,这与我对 OSGi 的动态特性的理解相矛盾。

我想这归结为从 OSGi 容器中的另一个包中检索服务(通过 ServiceTracker)实际上做了什么,它是创建一个新实例还是给你一个指向在容器中注册的实例的指针?

服务停止后使用服务实例有什么危险吗?

0 投票
3 回答
1459 浏览

jetty - Metro + Jetty + OSGi = 痛苦

我试图在 Equinox 上运行的 OSGi 包中将 Sun 的 HTTPServer 换成更好的 Jetty 服务器。

我试过这个:

但是当调用 endpoint.publish(url) 并生成服务器时,它会抱怨 org.mortbay.jetty.j2se6.JettyHttpServerProvider 的 ClassNotFoundException。

但是,正确的 jar 在包中,实际上在 Activator 中我可以实例化 org.mortbay.jetty.j2se6.JettyHttpServerProvider。

我认为这是某种类路径问题 - 生成的服务器可能位于不同的类路径中?我尝试在 JDK 级别添加 JAR,但这没有任何区别。

任何人都可以阐明如何使这项工作正常进行吗?

PS 也许有一天,可怕的 System.setProperty 调用将从世界上消失。希望 :)

0 投票
4 回答
9399 浏览

osgi - 关闭 OSGi 容器的最佳方法(特别是 Equinox)

我正在寻找关闭 OSGi 容器的最佳实践。

目前我们正在使用一个小型启动器应用程序,它调用 EclipseStarter.startup() 并安装一些核心包。之后,启动器终止。

当测试 GUI(作为包运行)关闭时,它会调用 System.exit(0) 来关闭容器,但必须有比这更优雅的解决方案。

谢谢

0 投票
3 回答
2641 浏览

spring - 找不到服务,因为 OSGi 捆绑包未激活

我在发现某些未激活的 OSGi 捆绑包提供的服务时遇到问题。让我描述一下情况:

  • Bundle A 定义了接口 X
  • Bundle B、C 和 D 提供实现接口 X 的服务
    • 这些包的服务是通过 Spring DM 注册的,因此它们仅在包被激活并且 Spring DM 初始化包中定义的应用程序上下文时创建
  • Bundle A 被激活,并且在某些时候向服务注册中心询问接口 X 的服务。它没有找到任何服务,因为 bundle B、C 和 D 尚未进入 ACTIVE 状态(它们只是 RESOLVED)。

我似乎无法启动捆绑包 B、C 或 D,因此无法注册它们的服务。不能通过将它们添加到来强制它们开始config.ini,因为可以在应用程序中安装任意数量的包(通过类似 Eclipse p2 的更新机制)实现接口 X。

该应用程序是基于 Eclipse 3.5 的 RCP 应用程序,使用 Spring 2.5.6 和 Spring DM 1.2.1。

如何强制激活这些捆绑包?

0 投票
2 回答
1470 浏览

jsf - JSF 是否可以作为 OSGi (Equinox) 包提供?

有一个 JSP/JSTL 包,可以部署在 Equinox OSGi 框架上,然后可以被其他包使用:

org.eclipse.equinox.jsp.jstl_1.0.0.jar

是否还有 JSF 捆绑包,所以我可以在捆绑包中使用 JSF 组件?我真的需要解决这个问题,因为我必须将现有的 JSF Web 应用程序转换为适合 OSGi 框架的应用程序。

请帮忙!

0 投票
1 回答
7744 浏览

java - 在 OSGi 中更好地处理线程上下文类加载器

我使用 OSGi 已经有一段时间了,我对遇到的问题有各种解决方案。我想重新审视其中一个,看看人们是否提出了不同的解决方案。

我对 OSGi (Equinox 3.4.2) 最常见的问题之一是线程的上下文类加载器经常不可用。我知道这部分是 Equinox 问题,但我也遇到了 Felix 的问题。我主要是在启动自己的线程或线程池的 3rd 方库中遇到这种情况。当这些在 Bundle 或 DS 激活期间启动时,它们可能会在没有 ClassLoader 的情况下结束。如果 3rd 方库有防止上下文 ClassLoader 丢失的保护,那么没问题,但不是每个人都检查它。稍后,如果上述库需要进行动态类加载,它可能会崩溃。

我已经使用了一段时间的成语如下(简要):

这个习惯用法通常在 Activator 或 DS activate() 方法中结束。有一些小的变化,我会检查是否tccl不为空,并且我不会覆盖上下文类加载器。

现在,我将这段代码贴在各个地方,我知道一些 3rd 方库可能会产生一个线程并毁了我的一天。虽然起初它是可以管理的,但我最终在许多随机的地方都有这个,这让我很困扰。

还有其他人遭受这个问题的困扰,他们提出了哪些解决方案?我还想知道这个问题是否在新的 Equinox 3.5.x 中得到解决,是否有人真正看到它工作?

问候。

0 投票
1 回答
327 浏览

java - 如何使用 Eclipse P2 处理提供的 Java 包

我得到了一些二进制形式的 OSGi 包,它们声明了对 Java 本身提供的“org.ietf.jgss”之类的包的依赖关系。P2 检测到这些依赖项,当我稍后尝试使用 P2 导向器应用程序安装产品时,安装失败,因为没有捆绑包提供这些包。但是,如果我使用 P2 产品构建,我会得到一个完整的安装产品,我可以使用它。

我的问题是我不想为应用程序的每个变体创建产品文件和构建。因此尝试了复制所有 P2 存储库的方法,以便使用 P2 控制器在目标系统上安装产品。

那么如何处理对 Java 提供的包的依赖关系,以及如何“说服”P2 忽略这些包(如果它们是由 Java 本身提供的)。

感谢您的帮助。

0 投票
3 回答
4263 浏览

osgi - 如何在运行时启动 OSGI 包?

我需要在另一个包的执行过程中等待启动一个包,这可能吗?

0 投票
1 回答
644 浏览

jsf - JSF in jetty-equinox,在其他包中找不到 Bean 类

我在 OSGi 环境中运行 JSF 时遇到问题。我正在使用 jetty web 容器和 equinox 来提供 OSGi 功能。我的应用程序的结构如下:第一个包包含所有 JSF 库,web.xml以及一个config.xml. 它看起来如下:

第二个bundle的结构如下:

在运行 Equinox 的应用程序时,bundle1 是所有浏览器请求发送到的主包。在第二个包中,index.xhtml可以根据请求由第一个包检索文件。捆绑包 2从index.xhtml捆绑包 2 中的“Bean.java”获取其值和属性。当我请求“index.xhtml”时出现问题,找不到 Bean.java 类。我认为这是因为 bundle1 的类加载器找不到它,它不知道它。所以我想问是否有人知道如何解决这个问题。如果是这样,请帮助我,我已经尝试了所有的可能性..

实际上是否有可能让 JSF 在使用相同的多个捆绑包上运行FaceletsContex?我可以在每个包中拥有单独的 faces-config.xml 文件,这些文件都可以连接到其他包中的其他 faces-config.xml 吗?谁能给我一个解决方案。示例代码会有所帮助。