问题标签 [enroute]

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 投票
1 回答
307 浏览

osgi - 用于运行 enRoute OSGi 框架的 Docker 映像?

我想尝试在 Docker 容器中运行 enRoute,但似乎找不到任何 Docker 映像。谁能推荐一张图片的位置?

0 投票
1 回答
41 浏览

raspberry-pi - 找不到 osgi.enroute.iot.pi.provider 依赖项

我正在尝试做这个教程

http://enroute.osgi.org/tutorial_iot/120-exploring.html

但我有一个问题:

找不到包,所以我可以解决 bndrun 依赖项:

当我尝试

未找到依赖项:

我在我的项目构建路径中手动下载并添加了 pi4j,所以我没有更多的 eclipse 问题,但我认为它不是 osgi 的一个好的解决方案,它不能在我的远程 raspberry ssh 控制台上运行......

0 投票
0 回答
200 浏览

osgi - 如何使用 BndTools 3.3.0 (enRoute) 设置 Blueprint Gemini 2.0.0?

我对 OSGi enRoute 和 BndTool 实现应用程序的概念很感兴趣。但是我在尝试使用 Blueprint Gemini 时遇到了困难。请有人帮助我。

问题

如何使用 Blueprint Gemini 2.0.0 运行基于 BndTools 的 OSGi 应用程序?

我的问题

  • 我想在基于 BndTools 的 OSGi 应用程序中使用 Blueprint Gemini 2.0.0。但是我的 OSGi 包没有得到解决。
  • 尝试自动解决时显示此错误消息:

缺少需求 &(osgi.extender=osgi.blueprint)(version=[1.0.0,2.0.0))

  • 我想知道为什么我的捆绑包需要版本 <=1.0.0 和 <2.0.0?这没有在我的项目的任何配置文件中指定(在 *.bnd 和 *.bndrun 文件中都没有)?

我的项目是如何设置和配置的

  • 使用 BndTools 3.3,我在 Eclipse Neon 中创建了一个新的“Bnd OSGi 项目”并选择“OSGi enRoute 3.3.0”作为项目模板。
  • OSGi 框架:org.eclipse.osgi;version='[3.10...]

  • 对于项目名称,选择了后缀“应用程序”。*然后我添加了一个 blueprint.xml。

  • 在 *.bndrun 文件中,我添加了两个包作为“运行要求”:

    • 我的捆绑包和
    • org.eclipse.gemini.blueprint.extender。在 *.bndrun 文件中,我添加了两个包作为“运行要求”:我的包和 org.eclipse.gemini.blueprint.extender:blueprint.extender 包已使用以下 Maven XML 语法添加到我的 Central 存储库中:

    <dependency> <groupId>org.eclipse.gemini.blueprint</groupId> <artifactId>gemini-blueprintextender</artifactId> <version>2.0.0.RELEASE</version> </dependency>

0 投票
1 回答
113 浏览

java - OSGI Enroute DTO 中的字符串被“压缩”

我当前的任务是使用 OSGI Enroute ( http://enroute.osgi.org/ ) 和 Angular 构建一个应用程序(尽管我们选择使用 Angular2/4 而不是捆绑的 AngularJS)。

到目前为止,一切都很好。我有一个 REST Java 应用程序,它响应来自 Angular 前端的各种请求,但我目前遇到了问题。为了使开发更容易,我在端口 4200 上提供 Angular 代码,后端正在侦听端口 8080。CORS 正在工作,因此我能够在构建代码时发送和接收请求。这可能与问题有关,也可能无关。

问题String是当使用内容超过21 个字符的DTO 进行响应时,该值会被“压缩”。我在尝试使用收到的值 (a UUID) 作为后续GET请求的键时注意到了这一点。检查DTO类我已经确认该toString()方法确实调用了一个私有compress方法,它需要任何长度超过 21 个字符的字符串并返回类似的东西,this nine...last nine这往往会导致难以重新获得UUID来自 ... {"uuid":"95b90155-...ee5c02200", "name":"My Object"}...

所以......给定这样的事情:

和这样的 REST 应用程序:

为了避免在我的 JSON 响应中“压缩”这个值,我缺少什么?

我尝试过的事情

  • (有效的)覆盖toString()提供的方法DTO。这可行,但似乎不是最好的解决方案。然后,我将不得不覆盖toString()字符串值可能超过 21 个字符的任何内容。文档表明目的是为了调试,这可能意味着我没有返回正确的类型?
  • request's_response()内容类型设置为application/json:我在 Chrome Web 控制台中看到的结果仍然是压缩字符串
0 投票
1 回答
295 浏览

java - 配置 OSGI Enroute REST 应用程序以允许异步请求

我目前正在尝试配置一个 REST 应用程序,以使服务器端事件能够使用EventSource. 目前,我IllegalStateException在尝试打开与 REST 请求的异步连接时遇到了问题,这似乎是服务器未配置为允许异步请求的结果。

一些代码

目前打印以下内容:

authenticate()当前在调试模式下修改标头以允许在开发应用程序时使用 CORS 并尝试User从标头中传递的令牌中获取一个Authorization...但是,即使我将startAsync()行放在上面,我仍然得到相同的IllegalStateException结果,所以我不认为这是标题修改的问题。

一些谷歌搜索表明,该特定行上的 ISEServletRequestWrapper.java:314表明底层 Felix/Jetty 服务器未设置为允许异步请求。

我还尝试简单地将标头设置为text/event-stream并继续写入响应,但当然它在退出 REST 方法时被关闭。

进一步的调查提供了其他解决方案,包括运行第二个 servlet,该 servlet 被配置为处理异步请求并将其绑定到单独的 URL 模式。当然,这是自己的努力,我不确定多个 servlet 协同工作的效果如何。最好我希望能够从一个 Enroute 应用程序中打开异步响应。

如果可以将航路应用程序配置为允许异步响应,那么我搞砸的设置是什么?

0 投票
1 回答
91 浏览

java - 未加载 OSGI 外部配置器文件夹

基于OSGI Compendium中的配置器规范,我们可以使用 json 文件指定配置。

还提到可以使用 @RequireConfigurator("resources/configs") 将默认配置位置从 OSGI-INF/configurator 更改到其他位置。

但这对我不起作用,我不确定我是否遗漏了什么。下面的屏幕截图显示了文件所在的位置以及 package-info.java 的内容

在此处输入图像描述

0 投票
1 回答
618 浏览

java - 在 OSGI 配置文件中使用环境变量

我们正在使用 OSGI enRoute ( https://enroute.osgi.org/ ),并希望在我们的 configuration.json 文件中包含环境变量。

这个想法是在 Dockerfile 中为这些环境变量分配值,以便在 Kubernetes 中进行后续部署。

带有环境变量的示例 configuration.json 文件受到赞赏,因此我们可以看到必要的语法。

在此先感谢,兰迪

0 投票
2 回答
1228 浏览

java - 如何开始使用 OSGi

在我工作的地方,他们要求我学习 OSGi 框架并决定使用它的最佳方法是什么。

在过去的两周里,我在网上冲浪,发现了很多使用 OSGi 的不同方法,例如,我发现了 OSGi enRoute 方法,以及一个名为 BndTools 的 Eclipse 插件。我发现我可以使用简单的声明式服务或像 AIOLOS 这样的框架。

我对所有这些不同的方法和技术有点困惑……您认为初学者开始使用 OSGi 的最佳方法是什么?是否有比其他实现更好的实现(例如 Equinox)?您有使用此框架的首选方法吗?

非常感谢您!

0 投票
0 回答
128 浏览

osgi - 如何设置从 enRoute 开始的 BND 项目以在 ApacheFelix 和 OSGI 6 上运行?

我尝试按照 enRoute 的教程进行操作,然后为 OSGI 6 定制它们。

我有一个作为 enRoute 项目生成的顶级项目,它具有 enRoute 依赖项和 bnd maven 插件。我添加了额外的依赖项:osgi.core:6.0.0, org.apache.felix.gogo.runtime,shell,console

此外,还有一个作为 enRoute Application 创建的 Maven 模块,它使用顶级项目作为父项目并从那里导入额外的依赖项。

在模块上运行mvn package后,出现一些错误:

[错误] 无法执行目标 biz.aQute.bnd:bnd-export-maven-plugin:4.1.0:export (default) on project my-bundle: null: MojoExecutionException:

在这个 NullPointer 之前,我看到 bnd/maven正在尝试收集依赖项,它确实找到了我的东西:example.my-project.my-module、osgi.core、org.apache.felix.framework、org.apache.felix。 gogo.shell等

[DEBUG] my-module: 添加资源 javax.servlet-api version=3.1.0 version=9.4.15.v20190215 [DEBUG] my-module: 添加资源 org.apache.commons.fileupload version=1.3.3 [DEBUG] my-module: 添加资源 org.apache.commons.io version=2.6.0 [DEBUG] my-module: 添加资源 org.apache.felix.http.servlet-api version=1.1.2 [DEBUG] my-module:添加资源 org.apache.felix.framework version=6.0.2 [DEBUG] my-module: 添加资源 example.my-project.my-module version=1.0.0.201905020747 [DEBUG] my-module: list(null) [org .apache.felix.http.jetty、org.apache.felix.gogo.shell、org.apache.felix.http.servlet-api、jaxb-api、osgi.core、org.apache.felix.framework、javax.servlet -api、example.my-project.my-module、org.osgi.service.http.whiteboard、org.apache.felix.gogo.command、org.apache.felix.configadmin、org.osgi.service。日志,org.apache.felix.gogo.runtime,org.apache.felix.webconsole]

然后 Maven 尝试使用错误更新运行包:

[DEBUG] init [DEBUG] 行为空,args=C:/workspace/my-project/my-module/target/tmp/export/my-module/cnf/cache/4.1.0/bnd-cache [DEBUG]原来的-runbundles是:\org.apache.felix.gogo.shell;version=1.0.0,\org.apache.felix.gogo.runtime;version=1.0.10,\org.apache.felix.gogo.command;版本=1.0.2,\ org.apache.felix.webconsole;版本=4.3.4,\ org.apache.felix.http.jetty;版本=4.0.6,\ org.apache.felix.http.servlet-api ;version=1.1.2 [DEBUG] 已解决 -runbundles 为:null

当我试图帮助 bnd 时,原来的 -runbundles 是由我手工填充的。但是 BND 并没有更新新的(事实上,它根本没有更新)

  1. 这是在您的项目中包含新捆绑包的正确方法吗?要将它们添加为依赖项(稍后,来自 bnd 的 maven 插件将使用 -runbundles 中的条目更新我的 .bndrun 文件)?
  2. 什么插件更新了 .bndrun 中的 -runrequires 以及我在哪里放置我的条目以让 BND 读取它们?
  3. .bndrun 中 -buildpath 的相同问题
  4. .bndrun 中 -runfw 的相同问题
0 投票
0 回答
38 浏览

mysql - OSGi 途中:如何使用 MySQL 而不是默认的 H2

我正在研究 OSGi,当我使用OSGi 航路代码模板时,我遇到了数据库连接问题。
我正在尝试切换到使用 MySQL,但它似乎不起作用。
它适用于默认的 H2 配置。

但是当更改为像这样使用 MySQL 时:

我的应用程序似乎崩溃了,我无法再访问 REST 端点。
谁能帮我看看我的配置?