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

java - 如何编写 OSGI 命令行应用程序

我目前正在接触 OSGI,并决定使用一个稍微不典型的 OSGI 用例。我想在命令行应用程序中使用它。我想要一种main(..)方法,它需要一些标志和参数,做一些事情并再次关闭。我不想要的是启动 Apache Karaf(或类似的)并在 OSGI 控制台中运行命令(虽然这可能成为一个可选功能)。

为什么首先将 OSGI 用于命令行应用程序?该应用程序应该使用同一库的不同版本(即elasticsearch)。仅仅因为它当然很糟糕。

我应该在捆绑包内还是在外部使用服务?如何做到这一点?可能会出现什么问题?

0 投票
1 回答
907 浏览

java - 我应该在 OSGi 中为 FrameworkFactory 选择哪个包?

我最近开始使用 OSGi 框架。我正在尝试从基于 maven 的项目中启动一个 OSGi 容器。

我在上面的 maven 项目的 pom.xml 文件中添加了这个依赖项-

以下是我的主要应用程序-

现在,当我尝试为 导入包时FrameworkFactory,我有两个选项可供选择。下面是图像。谁能帮我在这里选择哪一个?

在此处输入图像描述

我选这两个?

这是正确的吗?

0 投票
1 回答
238 浏览

ldap - 有 ApacheDS 2.0 OSGI 版本吗?

我正在使用 ApacheDS 2.0 并寻找 OSGI 版本,以便我可以在 OSGI 容器中使用它。我找不到一个。有谁知道外面有没有?

0 投票
3 回答
990 浏览

web-applications - 在战争中嵌入 OSGI

我有兴趣将 OSGI 容器添加到我的 WAR 中,但我找不到有关如何执行此操作的教程或文档。我发现了一些根本没用的东西。我对 Felix 实现和 Atlassian 实现感兴趣。

我愿意这样做,以便我的 war 接受插件,并且我可以动态扩展我的 Web 应用程序并将其部署到任何 Web 服务器。

任何指向文档或其他内容的链接?任何帮助表示赞赏。

0 投票
1 回答
486 浏览

java - 我没有找到构建工具 16 我可以使用 17 吗?

我在 Android 世界中相对较新,所以如果我的问题没有意义,请对新人耐心等待。

我要对一些 jar 进行 dexifing,以便我可以在 android 上运行 OSGi 环境。我的问题是我无法使用 SDK 管理器下载构建工具修订版 16,因为它不存在。

我尝试在这两个链接中直接下载:

http://dl.google.com/android/installer_r16-windows.exe

http://developer.android.com/sdk/older_releases.html

首先它有一个管理器,而不是下载版本 16,而是强制我下载版本 22.x,而第二个没有构建工具。

那么:如果我的手机有 android 4.1(API 16),我可以使用构建工具 17 的 dx 命令吗?

如果有人现在想知道为什么我不只是在尝试。这是因为有几个 jar 我认为不会直接工作,然后我想在开始之前避免问题来源并且不知道我必须解决的问题是什么。

PS:我想运行 OSGi 来运行已经开发的软件(中间件),所以即使没有 dexifing 也可以帮助实现这一点(如果复杂性和时间合理的话)。

0 投票
1 回答
2534 浏览

servlets - Apache Felix Servlet 桥设置

我正在尝试使用 OSGI 包使我的 servlet 可扩展:新添加的包也必须是 servlet。Felix http://felix.apache.org/documentation/subprojects/apache-felix-http-service.html提供了一个 Servlet Bridge 功能,对我来说看起来很不错,但我在设置过程中遇到了一些问题。正如 Felix 网页所说,为了设置 servlet 桥,我们需要做:

  1. 在 Web 应用程序(WEB-INF/lib)中部署 org.apache.felix.http.proxy jar 文件;[完毕]
  2. 在启动侦听器(如 ServletContextListener)中,将 BundleContext 设置为 servlet 上下文属性[DONE]
  3. 在您的 web.xml 中定义 org.apache.felix.http.proxy.ProxyServlet 并注册它以服务于所有请求[完成]
  4. 在您的 web.xml 中定义 org.apache.felix.http.proxy.ProxyListener 以允许转发与 HTTP 会话相关的事件[DONE]
  5. 确保将 javax.servlet;javax.servlet.http;version=2.6 添加到 OSGi 系统包[非强制性]
  6. 在 OSGi 框架内部署 org.apache.felix.http.bridge(或 org.apache.felix.http.bundle)[????]

第 6 步似乎不足以使 servlet 桥在我的情况下工作。我为我的 bundle servlet 做了所有步骤 1-5。我的主 servlet 具有 OSGI 嵌入式机制,所以我从 java 代码部署我的包。这是一段 OSGI 启动器的代码:

从主 servlet 代码中,我安装了所需org.apache.felix.http.bridge的包、我的 servlet 包(slf4j、javax.servlet...)的一些依赖项以及我按照步骤 1-5 制作的 servlet 包。部署结果:没有可用于 Servlet Bundle 的 HttpService - 这意味着我无法在我的应用程序中使用它,导致无法在我的 servlet 包中注册任何 Servlet 实例。

查看 MANIFEST.MF 的org.apache.felix.http.bridge我没有发现任何提及Export-Service: org.osgi.service.http.HttpService
我需要如何使用这个捆绑包?我需要如何设置 servlet 桥接器?

0 投票
0 回答
121 浏览

servlets - servlet-listener 和 MIME 类型支持 Equinox

我使用bridge.war和步骤在tomcat 7.x中嵌入了Equinox框架

http://www.eclipse.org/equinox/server/http_in_container.php

我开发了一个包含 servlet 注册代码的 osgi 包,并且正如预期的那样,这个 servlet 在桥上运行。

我的目标是在这个 osgi 包中支持 servlet apis 和 web.xml 功能,以便我可以在 osgi 中移植现有的 Web 应用程序。

目前,我使用“ org.eclipse.equinox.http.servlet.ExtendedHttpService ”来注册servlet过滤器和servlet。

但是,ExtendedHttpService 没有注册 servlet-listener 的方法。

谁能建议我如何在包含我的 servlet 注册代码的 osgi 包中支持/注册 servlet 侦听器和 MIME 类型。

0 投票
1 回答
1131 浏览

tomcat - 从部署在 tomcat 上的 OSGI Equinox 包进行 JNDI 查找(桥接模式)

我在 tomcat\context.xml 中配置了我的数据源。我已经部署了一个 Eclipse 提供的 bridge.war 来获取 servletbridge 环境。

我开发了另一个包含 servlet 注册代码的 osgi 包,我的目标是让 JNDI 从这个 servlet 包中查找数据源。

但是我得到

当我尝试在我的 OSGI 包中使用以下代码时

我在我的 osgi 容器中添加了 catalina.jar 并且也作为我的 osgi 包中的依赖项。

我的 bridge.war 的 launch.ini 如下所示:

有人可以帮我吗?

0 投票
0 回答
918 浏览

java - 无法在 Activator 类之外获取 BundleContext

我正在尝试按照 Neil Bartlett 的教程将 OSGi 嵌入到我的应用程序中。我的代码是这样的:

OsgiFramework课程是这样的:

我的BundleStarter班级从我的应用程序的“捆绑包”文件夹中获取所有捆绑包,然后安装它们并尝试启动它们。

然后我有一个名为的包MailSenderService,它有一个接口和实现。清单如下所示:

激活器非常简单:

我认为到目前为止它运作良好。

但后来我有另一个包试图使用 MailSenderService。

显现:

激活器是这样的:

我的斗争来了。如果我实现MailSenderServiceTracker这样的:

这样它就可以工作,并发送邮件。我的问题是:

  1. 这样代码在捆绑激活时运行,这是我不想要的。
  2. 我也不想发送带有硬编码参数的邮件。

为了避免这些,我在这个包中创建了另一个类:

sendCDDataInBarcodeViaEmail当用户单击按钮时调用该方法。如果我使用这个类,我当然不会在激活器类中创建 mailSenderST。

我认为我只会在我想使用它时跟踪我想使用的服务,但它不能以这种方式工作,因为该FrameworkUtil. getBundle(MailSenderService.getClass()). getBundleContext()行给出了null.

关于我做错了什么的任何想法?xxxServiceTracker 应该是什么样子的?我应该什么时候创建一个 xxxServiceTracker 来跟踪我想使用的服务?我应该如何获得正确的捆绑上下文?

提前致谢!

0 投票
1 回答
83 浏览

java - OSGi ServiceFactory 返回一个不可转换的对象

我一整天都在努力完成这项工作,这令人沮丧,因为我没有看到我的代码有任何问题。

这是我的课程:

DisplayerServiceFactory.java

这是包含 DisplayerServiceFactory 的捆绑包的 Activator.java

这是运行 previus 包的嵌入式 osgi 容器的代码的一部分

当我运行这段代码时,它给了我这个异常

为什么会这样?很明显 DisplayerImplementation 是 Displayer 的一个实例。

我也做了一些调试,并且在 ServiceFactory 类(DisplayerImplementation instanceof Displayer)中返回 true,但是,当我从注册为服务的 ServiceFactory 获得显示实现时,(DisplayerImplementation instanceof Displayer)返回 false。

这可能是我正在使用的框架实现中的错误吗?我正在使用费利克斯顺便说一句。

如果你来到这里,谢谢你的阅读!如果您尝试帮助我,我会非常感激。祝你今天过得愉快!或者晚上!