问题标签 [osgi-fragment]
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.
eclipse - OSGi - 在 Eclipse 之外运行
我一直在努力让我的 OSGi 应用程序在 eclipse 之外运行。这肯定不像我想象的那么容易,当然不仅仅是运行 java -jar org.eclipse.osgi_3.7.1.jar 并安装插件的情况。
我希望这是最后一个问题
java.sql.SQLException: 找不到适合 jdbc:mysql://localhost:3306/ 的驱动程序
这在 Eclipse 中运行良好。我有一个持久性捆绑包和几个碎片捆绑包,我根据所需的数据库类型加载它们。然后我还有另一个与数据库 JDBC 驱动程序捆绑在一起的包。在eclipse中我可以运行它,在eclipse之外我一直在尝试一切,包括使用类加载器来加载驱动程序
知道要看什么吗?从我可以看到我的设置是相同的,并且都运行相同的捆绑包。
spring-mvc - 使用 bundle 将页面添加到 OSGI webapp
我有一个 Spring MVC webapp,它使用 Spring DM 2 在 OSGi 容器中运行。目前,我使用的视图技术是 JSP。
我想通过将 pages 和@Controller
s 打包到包中来选择性地向我的应用程序添加功能。我可以使用片段来实现这一点,这意味着所有片段文件实际上都会在运行时最终出现在 webapp 包中。我觉得这种方式有点混乱......
有什么办法可以将我的 webapp 扩展打包成常规包而不是片段?JSP 以外的视图引擎会有所帮助吗?
java - 何时将 OSGi 片段附加到主机?
我有一个OSGi
包含持久性服务(使用hibernate
)的包和一个包含配置(xml 文件)的片段。在捆绑包的激活器中,我正在使用以下方式加载配置:
但有时,它URL
是空的。当我尝试列出所有可用URL
的(使用findEntries
方法)时,似乎捆绑包自己的总是可用的,但片段的只是有时。我使用的是Felix
4.0.2,bundle 和 fragment 是从同一个Felix
. 自动启动级别。
osgi - 使用 OSGi API,我如何确定给定的捆绑包是否是片段?
在 OSGi API 中,对BundleContext.getBundles()的调用会返回所有包,无论它们是否是片段。对于给定的Bundle对象,判断这是否是片段的最佳方法是什么?
java - 使用 Spring-DM 扩展器
我需要等待一段时间才能关闭我的 OSGI 上下文。(给一些时间来完成当前正在运行的任务)。我遇到了beanshutdown.wait.time
中的属性。extenderProperties
谁能告诉我如何使用这个 OSGi 片段来实现我的目标?我想我可以将片段包附加到我现有的 OSGI 包中。
提前致谢。感谢你的帮助。
java - 如何使用 OSGi 片段贡献具有相同文件名的平台相关本机代码?
我正在使用JNotify项目来监听文件系统事件。这取决于每个 OS:processor 体系结构的一个本机库。例如,有一个用于 Windows x86 的库,一个用于 x86-64 的库等。
单片捆绑
最初,我有一个包含 JNotify Java 类和本机代码的包。本机代码在 Bundle-NativeCode 中声明如下:
(为了更好的可读性,我已将它们格式化为 bnd 样式......显然,实际的 MANIFEST.MF 文件格式正确)。
这运作良好。
移动到片段
我认为如果我将库移动到单独的片段包中会“很好”,这样我就可以为我感兴趣的架构贡献片段。以 Linux 为例,我将它们分成两个包:
Linux 32 位
Linux 64 位
请注意,这些捆绑包是从不同的来源构建的。尽管 libjnotify.so 文件名相同,但它们是不同 Eclipse 项目中的不同文件。它们必须相同才能与 JNotify 一起使用。
请注意,相同的文件名被贡献给主机包。在这种情况下,文件名为 libjnotify.so。
如果我在我的 64 位机器上运行这些,并且在 32 位之前加载 64 位包,它就可以工作。
但是,如果首先加载 32 位包,我会得到:
显然正在加载 32 位库。但为什么?我的 Bundle-NativeCode 定义主机必须是 32 位 Linux 机器才能使用 32 位包的版本。我想如果那个子句不匹配,图书馆会被忽略吗?
我试过的东西
- 删除可选通配符...这仅意味着捆绑包无法解析
osgi - OSGi 片段更新与包更新?
只是想知道 OSGi 片段更新与捆绑更新之间是否有任何显着差异?
当片段包更新时,我们应该在更新的片段上还是在其父包上调用 FrameworkWiring.refreshBundles 方法?
你能指点我一些使用片段开发osgi应用程序的教程/示例吗?
osgi - 在 Felix servletbridge 战争中添加 OSGi 片段包
我正在尝试创建战争托管 OSGi 包。完整的配置应该能够托管 WAB 包,现在我尝试为此进行集成pax-web-extender-war
。它需要一些依赖项,例如slf4j-api
andslf4j-log4j12
问题是:我总是遇到这个异常:
因为slf4j-log4j12
真的是一个片段包。我认为菲利克斯应该解决这个问题,但事实并非如此。所以我尝试将这个 jar 移动到,WEB-INF/lib
但随后由于 osgi 无法将其解析为捆绑包而导致接线失败。
所以,
- 我应该把片段包放在哪里?
- 它应该以某种方式配置吗
framework.properties
? - Apache Felix 甚至能够处理片段包吗?
以下是战争的当前布局(请注意,它基于 felix http 桥示例):
osgi - 如何将 Fragment-Bundle 放入 Tycho 测试运行时?
我有一个依赖于它的实现包和片段包(清单中的片段主机)。此外,还有一个包含一些测试的捆绑包。
现在我想测试我的实现并使用 tycho-surefire-plugin。带有测试的bundle 是通过MANIFEST 中的Require-Bundle 引用实现的bundle。到现在为止还挺好。问题是如何将片段包放入测试运行时?我已经在我的 eclipse-test-plugin 中尝试了 tycho-surefire-plugin 配置中的依赖关系。但它不起作用。什么是正确的方法?
编辑:我的测试插件的 pom.xml
片段包的清单:
从反应堆 pom.xml 中提取:
谢谢!
eclipse - 如何为多个平台定义带有二进制组件的 OSGI/Eclipse 插件
我创建了一个 Eclipse 插件,并且需要一个原生二进制文件来支持它的功能。我已经为 Win 和 Mac 准备好了本机代码。每个平台对native代码的调用是不同的,所以也有一些与native代码相关的插件代码。(实际上本机代码是 JNA 代码,确实非常不同。)目前我有一个扩展点,每个本机支持插件都在那里做出贡献。所以,只要有原生支持,主插件就可以工作了。此外,我对每个原生支持插件都有一个测试片段,用于对功能进行单元测试。
- 我应该如何设置插件,以便每个人在从更新站点或 p2 存储库下载时都能获得正确的插件?(我注意到例如 SWT 使用片段作为本机代码,所以这是要走的路吗?)
编辑:按照答案将插件转换为片段后,我应该如何处理这些插件的单元测试片段?碎片的碎片是不可能的。
- 如何在 Tycho 中进行设置,以便 Tycho build 运行适合当前平台的测试并忽略其他平台。
编辑:我有 Mac 和 Windows 本机代码,两个片段,因此在 pom.xml 中有两个环境。但是后来Tycho抱怨“插件x不能安装在这个环境中,因为它的过滤器不适用”,当然不是,任何时候只能激活Win/Mac中的一个。Tycho 可以自己解决这个问题,还是我需要依赖操作系统的 Maven 配置文件?