问题标签 [osgi-bundle]
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.
file-upload - Apache Commons FileUpload OSGi 包
我在 Karaf 中安装我的包时遇到了这个错误,我是 OSGi 和 Karaf 的新手,所以我可以在解释错误时使用一些帮助。
这是在我的feature.xml
在我的 POM 中
Maven 存储库显示 1.3 的最新版本,但如果有,它可能不是 OSGi 版本,有人知道我在哪里可以找到它吗?我也试过wrap:mvn
了,也没有用。
java - 从 FrameworkUtil 类获取 BundleContext 后抛出 NPE
我正在按照本教程将 OSGi 嵌入到基于 maven 的应用程序中。我有一个类文件,可以创建并启动此处提到的框架,并且它在那里工作正常,因为我能够轻松获得 BundleContext。
我在我的 pom.xml 文件中添加了这个依赖项。
现在,当我运行我的整个框架并且当它到达我需要使用的同一个基于 maven 的项目中的一个新类文件时,BundleContext
我想我可以使用这段代码来获取 BundleContext`
FrameworkUtil.getBundle(ModelProcessor.class).getBundleContext();
但不知何故,上面的代码把我扔了NullPointerException
,然后我试着打印出来看看发生了什么——
System.out.println(FrameworkUtil.getBundle(ModelProcessor.class));
所以上面的行打印 -null
有谁知道 null 在这里对 OSGi 意味着什么以及我可以做些什么来解决这个问题?
谢谢您的帮助。
java - 我应该在 OSGi 中为 FrameworkFactory 选择哪个包?
我最近开始使用 OSGi 框架。我正在尝试从基于 maven 的项目中启动一个 OSGi 容器。
我在上面的 maven 项目的 pom.xml 文件中添加了这个依赖项-
以下是我的主要应用程序-
现在,当我尝试为 导入包时FrameworkFactory
,我有两个选项可供选择。下面是图像。谁能帮我在这里选择哪一个?
我选这两个?
这是正确的吗?
java - 使用字节数组而不是文件位置安装 osgi 包?
我正在尝试安装 OSGi 包。我能够成功地做到这一点。现在我正在做的是,在我们公司,我们有某种存储空间,我们在其中存储所有 OSGi 捆绑包 jar。所以我去把那些 OSGi 包 jar 下载到某个本地目录中,然后我尝试从本地位置安装这些包,这些包是从我的存储库下载的。
下面的方法只接受文件位置 - 所以我提供了我的完整本地文件路径。
context.installBundle(localFilename)
有什么办法,我可以使用byte[]
. 基本上,我试图避免将 jar 文件从我的存储位置下载到某个本地文件夹,然后使用该本地位置来安装捆绑包。
有没有什么办法可以做到这一点,而无需将 jar 文件从我的存储位置复制到我的本地文件夹,然后使用本地 jar 文件的完整路径然后安装它?
任何人都可以通过上面代码的简单示例来帮助我吗?谢谢您的帮助。
java - 如何在未启动框架的其他类中获取 BundleContext?
我最近开始使用 OSGi 框架。我正在尝试从 Java 主应用程序启动 OSGi 框架。我正在按照本教程将 OSGI 容器嵌入到我的项目中。
下面是我用来启动 OSGi 容器的 Java 主应用程序。在下面的课程中,我可以BundleContext
使用该framework
对象,然后我可以使用它BundleContext
来安装实际OSGi bundles
的 .
现在这是我在同一个基于 Maven 的项目中的第二堂课。我也需要在这里使用 BundleContext 。所以我想我可以FrameworkUtil.getBundle(OSGiBundleTest2.class).getBundleContext()
用来获取 BundleContext 但它在这里不起作用,我在那里得到了 NPE。这意味着,这个类不是由 OSGi 类加载器加载的。那么现在在下面的类中使用 BundleContext 的最佳方法是什么。
}
callMethodOfAnotherClass
将从 OSGiBundleTest1 类调用。我没有考虑将framework
对象传递给 OSGiBundleTest2 类的构造函数或某种方法来使用框架对象,然后从那里获取 BundleContext ......还有其他方法可以做这件事吗?
有什么方法可以确保所有的类都只被 OSGI 类加载器加载?
web-applications - 如何在 Tapestry 中使用 OSGi 服务
我有我的 Tapestry Web 应用程序,它为某些数据集提供完整的 CRUD 功能。到目前为止,我一直在使用模拟来开发和测试它。
但是,我现在需要用 OSGi 服务(使用 Felix 运行)替换该模拟。
我的主要问题/问题是:
- 我是否需要将 OSGi 服务注入到我的挂毯应用程序中,如果需要,该怎么做?
- 假设它是注入的,有没有关于如何使用它的实践?我应该调用这些方法或类似的任何特殊方法吗?
- 在我调用了我需要的方法之后,我是否需要对它做一些事情,还是自动完成?
- 我需要担心吗
HttpService
(我看了一些关于它的抱怨,但不太明白)
为您提供一些背景信息,这就是我现在的做法
例如,我想要替换MyDao dao
为提供相同功能的 OSGi 服务,以便我可以在onPrepareForRender
方法中使用它。
我可以放心地假设与该服务关联的 OSGi 包已经在运行。
应用程序的其余部分作为 OSGi 应用程序制作。我在我的 pom.xml 中添加/更改了一些东西(maven-bundle-plugin,按照http://www.javabeat.net/2011/11/writing-an-osgi-web-application/中的说明添加了一些清单条目)。
但是,它仍然不起作用。
顺便说一句,我正在尝试将我的 WAR 转换为 WAB。
先感谢您 :)
编辑:从 WAR 转换和部署到 WAB 时出现问题
当我将我的网络应用程序打包为war
东西时,效果很好。但是,当我将它打包为bundle
,并尝试在 GlassFish 中部署它时,我收到以下错误消息:
部署期间发生错误:没有安装的容器能够处理此应用程序管理员战争。有关详细信息,请参阅 server.log。
当我转到 server.log 时,它是这样说的:
android - Apache Felix - 在 android 应用程序的 assests 目录中存储包
我将 Apache Felix 嵌入到一个 android 应用程序中。现在,我使用下面的代码来安装一个包:
这可以正常工作,但它需要将捆绑包存储在 android 设备的 sdcard 中。然而,我不喜欢那样。我希望将捆绑包存储在 android 项目内的目录中。例如,在assests
文件夹内。有没有办法做到这一点?
我试过这个:
正如预期的那样,它没有用。
java - 无法解决 1.0:缺少要求 [1.0] osgi.wiring.package;(&(osgi.wiring.package=
我正在尝试启动我的一个捆绑包,但是一旦启动它,就会出现以下异常。我不确定问题是什么。
让我告诉你我是怎么做的——我按照本教程启动了一个 OSGi 框架,它工作正常,但是一旦我启动包,GoldeneyeModellingFramework——
而且,我在我的主项目中使用了下面的依赖项,它启动了一个 OSGi 框架/容器:
它总是给我上述例外。BundleGoldeneyeModellingFramework
依赖于GoldeneyeStorageService
包含这个包的 maven 项目com.host.domain.sharedpersonalize.storageservice
。
以下是捆绑包的Manifest.MF
文件GoldenModellingFramework
:
而且,下面是捆绑的pom.xml
文件:GoldeneyeModellingFramework
GoldeneyeStorageService
如果您需要Maven 项目的任何其他文件,请告诉我。我不知道如何解决这个问题。谁能帮我这个?
一些更新:-
下面是GoldeneyeStorageService
项目的 MANIFEST.MF 文件-
java - 在 OSGi 包中添加第三方 Maven 依赖项的最佳方法
我刚刚开始进行 OSGI 开发,并且正在努力了解处理依赖/第三方 JAR 或 maven 依赖项的最佳方法是什么。
即,如果我正在创建一个捆绑包,那么我可能会使用一些第 3 方 JAR。当我创建我的包 JAR 以部署到 OSGI 时,显然这些 3rd 方 JAR 不包括在内,因此包将不会运行。
我知道一种选择是将这些 JAR 转换为捆绑包并将它们部署到 OSGI 容器中。但是我不能对我将要使用的每一个 Maven 依赖项都这样做。
处理这种情况的最佳解决方案是什么?有什么办法可以将 jar 文件直接嵌入到包中?
下面是我的 java 主应用程序,它正在启动 OSGi 框架,然后尝试安装一个依赖于 Log4j 的简单包。将来,我还可以拥有其他一些第三方 Maven 依赖项。
下面是我的 OSGi 包的 pom.xml 文件DependencyBundle
-
android - 更新嵌入到 Android 应用程序中的 Felix 中的包显示:“java.io.FileNotFoundException”
我将 Apache Felix 嵌入到一个 android 应用程序中。启动和停止捆绑包工作正常。但我想通过读取另一个包文件来更新包。这是我的代码:
我希望这可以工作,并且我的捆绑包将得到更新,但不幸的是,我收到了以下错误:
此异常发生在以下行:
我完全确定该捆绑包AndroidVideoPlayer_1.0.0.201308231205.jar
存在于下载目录中,并且我之前尝试过启动它并且它运行良好。我很困惑。有什么帮助吗?谢谢。