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

eclipse - 如何使用 scala 编写 eclipse rcp 应用程序?

Scala Eclipse 插件页面说: * 支持 Eclipse 插件和 OSGi 开发,包括从 plugin.xml 和清单文件超链接到 Scala 源代码。

这种支持如何运作?没有制作 Scala 插件的向导。我没有找到关于如何在 Eclipse 插件/RCP 应用程序中使用 Scala 的文档。甚至可能吗?

0 投票
1 回答
1549 浏览

java - Felix/OSGi:如何使用不是 OSGi 服务的 SCR 组件?

Apache Felix 的 SCR 允许声明(通过注释或 XML)组件,然后将其实例化、连接到它们的依赖项并注册为 OSGi 服务。

也可以跳过服务注册部分,只让 SCR 创建组件(通过指定@scr.component,但省略@scr.service)。我在想这可能仅对依赖注入(在包中)有用,但是如何使用组件?可以使用scr.reference注入服务,但这不适用于非服务(或者是否)?

直接访问 SCR API 是可行的,但直接与容器服务对话有点违背 DI 的目的。

0 投票
3 回答
283 浏览

eclipse - 限制插件之间贡献的扩展点数据

我正在构建 2 个 eclipse 插件;让我们称它们为插件 A 和插件 B ......

插件 A 需要许可证才能运行,插件 B 对全世界免费。我在插件 B 中创建了一个扩展点,插件 A 贡献(并且在某些情况下覆盖)数据。如果插件 A 未获得许可(无需检查插件是否可以启动),我想找到一种方法来忽略插件 B 中的数据。

eclipse中是否有这样的机制可以让我完成这样的壮举?我目前的解决方法是检查插件是否已启动(通过捆绑包)以及是否未尝试启动它。start()如果插件 A 未经许可,我会在方法中抛出异常。

0 投票
5 回答
2788 浏览

java - 嵌入式 OSGi 或应用程序包

在过去的两天里,我刚刚阅读了所有我能拿到的 OSGi 东西,我终于认为我已经掌握了它。

我现在正尝试将它与现有应用程序集成,原因有很多,例如 3rd 方插件、自动更新,更不用说 SOA 只是让我高兴。

我现在有一个我正在努力做出的决定,那就是天气

  1. 我的整个应用程序应该成为默认安装在容器中的 OSGi 包;或者
  2. 我的应用程序应该启动一个嵌入式 OSGi 容器,并为所有插入的服务与其交互。

我更喜欢 1,因为这让我可以轻松更新应用程序并且架构会保持一致。当然,我希望必须将应用程序重构为许多较小的包。然而2在短期内使事情变得容易得多,但将来会变得很尴尬。

0 投票
2 回答
1530 浏览

jboss - 关于 OSGI 问题的 ATG 标签库

我们目前正在创建一个需要在 SLING/OSGI 上使用 ATG 标签库的应用程序,我们已经创建了一个包含这些标签库的包并上传了它,当然这些标签库调用 ATG 类,所以我们使用 sling.properties 文件将它们包含在 bootdelegation 中.

sling.bootdelegation.simple=atg.nucleus sling.bootdelegation.class.atg.nucleus.Nucleus=atg.appassembly,\atg.appassembly.ant,\atg.appassembly.progress,\atg.appassembly.util,\ ... ETC...

首先我们得到这个错误:

org.apache.sling.api.scripting.ScriptEvaluationException: atg/taglib/dspjsp/ImportBeanTag at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:163) at org.apache.sling.scripting .core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:107) 在 org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:226) 在 org.apache.sling.engine.impl.request .RequestData.service(RequestData.java:465)

……

.... 引起:java.lang.NoClassDefFoundError: atg/taglib/dspjsp/ImportBeanTag 在 org.apache.jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspx_meth_dsp_005fimportbean_005f0(center_jsp.java:177) 在 org.apache。 jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspService(center_jsp.java:154) 在 org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 在 javax.servlet。 http.HttpServlet.service(HttpServlet.java:810) 在

因此,我们将 atg.taglib.dspjsp 添加到要添加到 bootdelegation sling.properties 文件中的包中。

然后我们得到了这个错误:

org.apache.sling.api.scripting.ScriptEvaluationException: atg.taglib.dspjsp.ImportBeanTag at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:163) at org.apache.sling.scripting .core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:107) 在 org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:226) 在 org.apache.sling.engine.impl.request .RequestData.service(RequestData.java:465) ...

引起:java.lang.ClassCastException: atg.taglib.dspjsp.ImportBeanTag atg.apache.sling.scripting.jsp.jasper.runtime.TagHandlerPool.get(TagHandlerPool.java:125) at org.apache.jsp.apps。 mygeometrixx.components.contenpage.center_jsp._jspx_meth_dsp_005fimportbean_005f0(center_jsp.java:177) 在 org.apache.jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspService(center_jsp.java:154) 在 org.apache.sling.scripting。 jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

所有这些都在 JBOSS 上运行。

有没有办法避免导致强制转换异常的此类冲突?

0 投票
1 回答
1812 浏览

eclipse - Best practices for Eclipse Feature Integration Testing

I am developing an Eclipse feature consisting of several Eclipse plugins, using Equinox Declarative Services (DS) to wire the plugins together at runtime. I would like to add integration tests to verify the equinox configuration.

In particular, I want to verify that

  • the service components bind together as expected
  • the bundles are activated
  • the plugins share information as expected (see Edit 2)

Furthermore, I want to make this integration testing a part of my continuous integration process using an Eclipse PDE headless build (as described here and here).

My question is: Can you recommend any frameworks, tools, or practices that will facilitate this type of integration testing within the constraints I've identified?

I've found two leads so far:

  • Spring Dynamic Modules includes a framework for OSGi integration testing. However, I haven't been able to get a simple Spring DM test to run within Eclipse. It complains that "the platform is already running".
  • Pax Exam (formerly Pax Drone) is another OSGi integration testing framework.

Edit: To clarify, each plugin has an OSGi service component configured with a component definition xml file. A mistake in one of these configuration files will not break any plugin dependencies and could easily go unnoticed until runtime. Integration testing is necessary to detect such failure.

Edit 2: So far every thing I've seen seems to confirm Uri's assertion (see below) that multi-plugin Eclipse features aren't integration-tested at the feature/product level. I'm willing to go without comprehensive integration tests if I can at least automatically verify that the service components bind together correctly.

My approach (not working yet):

I'm running my code with an Eclipse Plug-in Test launch configuration, launching my Eclipse product as the "Program to Run". When the tests run, I can verify that the bundles are active but the service components do not get activated and the getServicesInUse and getRegisteredServices methods return null. I loaded a class from each bundle in case it was a lazy-activation issue, but that didn't help. I also verified that all the service components are "immediate" components, so they should be activated as soon as their bundle's are activated. Why isn't Equinox DS doing its magic?

0 投票
2 回答
15505 浏览

java - 如何获取 Eclipse RCP 应用程序的 OSGi BundleContext?

我刚刚开始使用 Eclipse RCP 应用程序,它基本上只是提供的“hello world”示例之一。

当应用程序启动时,我想查看我的命令行参数并根据它们启动一些服务。我可以在IApplication.start中获取命令行参数:

但是如何获取 BundleContext,以便注册服务?它似乎不在 IApplicationContext 中。

0 投票
2 回答
1711 浏览

java - 使用 OSGi 时是否可以进行字节码操作?

我正在制作一个应用程序服务器,在其中我需要使用一些字节码操作(例如,将自定义equalshashCode方法插入到带有注释的类中@Entity)。现在我给 JVM 一个 Java 代理(-javaagent选项),它使用ASM进行字节码转换。

我一直在考虑使用OSGi,但我不知道它是否允许我进行必要的字节码操作。

  1. 使用 OSGi 时是否可以进行字节码操作?如何?
  2. 捆绑包是否可以声明自己,它需要一些字节码操作才能工作?例如,应用程序服务器要求对它自己的一些核心类进行操作。
  3. 是否可以指定某个其他捆绑包需要一些字节码操作,而该捆绑包不知道它?例如,所有在服务器上运行的应用程序都必须被操纵,但应用程序不需要知道它。
  4. 捆绑包是否可以声明自己,所有依赖于它的捆绑包都必须进行字节码操作?这将使我很容易声明所有依赖于包含@Entity注释的 API 包的人都必须被操纵。
0 投票
11 回答
20613 浏览

java - 使用哪个富客户端平台

我们最近开始开发 Java 桌面应用程序,管理层要求我们使用富客户端平台。我知道Java有四个:

  1. Eclipse RCP - www 链接到 ecipse rcp
  2. Netbean RCP - Netbeans RCP 网站
  3. Spring RCP -春天富客户端
  4. Valkyrie RCP - Valkyrie 富客户端

有没有人在这些方面有任何经验,如果有,每个方面的优势和劣势是什么?

谢谢

0 投票
1 回答
209 浏览

osgi - iPOJO:为什么 InstanceManager 的 getPojoObject() 会返回 null?

我正在使用 Felix OSGi iPOJO 库,并且我正在以编程方式访问工厂以创建 ComponentInstances。我在这里阅读了代码:

http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/InstanceManager.java?view=markup

试图弄清楚为什么我对 getPojoObject() 的调用返回 null。

我的问题是 getPojoObject() 方法在什么条件下可以返回 null?

编辑:我想我明白我现在在问什么 - 正如 TofuBeer 指出的那样,它在 JavaDoc 中说,只要在实例化对象时遇到任何问题,它就可以返回 null - 这不是一个有用的返回值,以及它被处理隐藏了真正的错误是什么。谢谢你的眼睛,TofuBeer,这让我发疯了。