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

java - osgi-karaf-多个版本的服务和骆驼路线

OSGi 的好处之一是版本控制,如此处所述。根据文档,OSGi 可以托管不同版本的“相同 jar”,并让其他应用程序相应地访问它们。

我的任务是使用 Camel 路由来利用 OSGi 的相同属性(我正在使用Apache-Karaf容器)。

我必须部署多个版本的服务并让Camel根据请求路由到正确的版本。我广泛搜索了谷歌,但我没有找到合适的例子:(

请给我任何指示或指导我举个例子。

更新

通过服务,我的意思是 osgi 捆绑服务,它是这样定义的

我已经按照本教程中提供的步骤创建了一个名为transformService并且TransformServiceImpl是该服务的实现类的服务。

现在假设我将修改TransformServiceImpl并作为新版本发布(通过在 中更新我的版本pom.xml)。另外,我将安装这两个版本,也就是说, demo.service-0.1.jardemo.service-0.2.jarKaraf 中这对 Karaf 来说是可以的)。在这种情况下,我如何路由到特定版本的服务?

我可以创建 2osgi:reference个指向相同服务但不同版本的吗?像这样的东西?

并在路线中使用它们?

0 投票
4 回答
2586 浏览

spring - 具有多个消费者的 Activemq 主题

我现在已经在这个问题上工作了很多时间,但似乎找不到任何最终解决方案。我有一个消息制作者,应该作为广播员,发布关于两个不同主题的消息。发布者的发布过程遵循以下流程:

  • 创建与工厂的连接并启动它。
  • 创建会话
  • 使用会话和给定主题名称创建消息生产者
  • 发送 n* 条消息
  • 等待 n 秒
  • 关闭生产者、会话、连接

然后我有 3 个消费者使用以下配置订阅了这些主题(每个消费者都有自己的clientIddurableSubscriptionName):

事实是我的消费者并不总是收到消息,至少不是全部。有时两个消费者得到所有消息而第三个没有得到任何消息,有时随机消费者收到随机数量的消息等等......我注意到的另一个事实是,如果我停止代理并重新启动它,消费者将收到丢失的消息,我真的不明白为什么在代理的第一个生命周期内不会发生这种情况。有人会这么好心并试图帮助我吗?

谢谢,乔治。

PS:我正在考虑使用虚拟主题,因为我的主要目的是拥有一个广播制作人,它将允许其他消费者在未来附加我不希望每次都通过添加另一个虚拟分支来修改制作人到主要话题。

0 投票
1 回答
234 浏览

java - 使用 Apache Camel 蓝图 - 需要在容器和独立的内部持久保存属性

我有一个使用蓝图和 Camel PropertiesComponent 进行配置的 Camel 路线,我可以通过“mvn camel:run”独立运行它,也可以将它安装到 Karaf 容器中。两者都工作得很好,发现属性并将它们注入到路由中。

我无法弄清楚的是如何在运行时更改属性时保留它们(例如,我想在路由停止/关闭时设置一个标记,然后在路由启动时将其读回)。

我已经阅读了有关 OSGi ConfigAdmin 的信息——但这似乎不支持持久属性。我还阅读了有关 OSGi 首选项服务(确实支持持久性)的信息 -但是我如何实现它以便我可以独立运行它或在容器中运行它?这将需要骆驼路线引用服务,从而取决于OSGi?

有没有办法以不依赖容器服务的独立方式抽象首选项服务?

提前致谢。

0 投票
0 回答
53 浏览

java - 在 Eclipse 中构建 Maven(OSGI 包)项目

我正在努力让 Eclipse 认为我的项目已编译并且可以工作。我继承了这个有 23 个模块(所有 osgi 包)的项目,当我运行“mvn install”时它通过了,但 Eclipse 仍然在所有模块旁边有红色 x。

我的最终目标是能够通过 eclipse 运行这段代码并对其进行调试。现在我不得不将它部署到 Karaf 中,启动它,安装功能,然后在完成后将其全部拆除。这要了我的命,因为它要花很多时间。

关于如何改进这一点的任何建议,以便在代码中添加一点小改动不会花费超过 5 分钟?

谢谢!!

0 投票
2 回答
3119 浏览

cxf - 蓝图、Apache Camel 和 cxfrs

我正在尝试使用蓝图、apache camel 和 apache cxf-rs 开发一个休息服务——服务实现将由骆驼处理。

问题是其余端点似乎没有分配给骆驼。

这是我得到的例外:

启动 Camel 时发生错误:CamelContext(blueprintContext) 由于 /crm 上已经有一个端点正在运行。

我的蓝图如下:

0 投票
1 回答
1168 浏览

activemq - 访问activemq Poolable Connection factory作为OSGI服务

我正在使用 fuse 6.0 和 activemq 5.8。与其在每个 bundle 中定义 activemq 可池连接工厂,不如在一个公共 bundle 中定义并将其公开为 osgi 服务。我在 FUSE_HOME/etc 中创建了蓝图文件并打开了这样的 osgi 服务。

当我尝试在这样的蓝图文件和 spring 文本文件中访问此服务时

但我在捆绑启动期间得到了以下预期。

添加连接 ID 失败:PLNL6237-55293-1401929434025-11:1201,原因:java.lang.SecurityException:用户名 [null] 或密码无效。

我什至在我的包中定义了纲要定义。

我怎么解决这个问题?任何帮助表示赞赏。我在网上找到了这个https://issues.apache.org/jira/i#browse/SM-2183 我需要升级吗?

0 投票
1 回答
505 浏览

activemq - Fabric8 中的 ActiveMQ 连接使用蓝图而不是 DS

Fabric8中,获得 ActiveMQ 连接的首选方式是通过mq-fabric配置文件,该配置文件通过声明式服务提供一个 ActitveMQConnection 对象。 GitHub 上给出了一个这样的例子,它工作得很好。

然而,我还没有找到一种方法让声明式服务和蓝图服务在 Fabric8(或任何 OSGI 环境,真的)中协作,因此,我的 OSGI 应用程序必须使用 DS 或蓝图。将两者混合似乎不是一种选择。

如果要使用蓝图(我这样做),则必须首先通过 Web UI 创建代理,然后返回控制台并键入cluster-list,找到 Fabric8 分配给代理的端口,然后在中配置连接像这样的蓝图:

虽然这确实有效,但它并不完全适合部署,因为它涉及一些我希望尽可能避免的手动步骤。主要问题是我不知道那个端口会是什么。我已经梳理了配置文件,但在任何地方都找不到。

是否有一种更清洁、更自动化的方式来通过蓝图在 Fabric8 中获取 ActiveMQ 连接,还是我们必须使用声明式服务?

0 投票
1 回答
359 浏览

java - @Cacheable 注解不适用于 osgi 蓝图

什么是使用 Blueprint 在 OSGi 容器内打开 ehcache 的正确方法。要为非 osgi、非蓝图项目打开 ehcache,我们只需使用 spring 注释:

org.springframework.cache.annotation.Cacheable

内部java:

在xml配置中:

不幸的是,在 OSGi 和 Blueprint 中并非如此,因为我们不能将 Blueprint 与 Spring 混合使用。我已经尝试过,但没有找到命名空间处理程序的异常。@Cacheable 注释是否可以做到这一点,或者我们是否应该在没有弹簧支持的情况下尝试使用 ehcache?

我使用 Karaf 2.3.0.redhat-610379,JBoss Fuse 6.1.0

0 投票
1 回答
778 浏览

java - ServiceMix 和 Camel:如何创建路线?

这部分难题是我的噩梦,我在 2 个不同的 tomcat 实例上部署了 ServiceMix 和 2 个 Java 应用程序:

第一个应用程序:

第二个应用程序:

现在我的两个应用程序需要通信,尽管我希望通过 ServiceMix 进行通信,所以我可以做一些日志和所有事情。

我已经在./deploy目录中创建了一个蓝图 XML 文件,但我应该在其中放置哪些路由?

我不能这样做:

那么正确的做法是什么?

顺便说一句,我的 XML 文件如下所示:

0 投票
1 回答
54 浏览

java - 如何在 FuseFabric 中获取当前蓝图状态(事件)

我使用 FuseFabric:karaf。此代码从接口 BundleInfo(ACTIVE) 返回状态。我怎样才能采用 BluePrint 状态(已创建)?

START LEVEL 100,列出阈值:-1 ID 状态蓝图级别名称 [0] [Active] [Created] [0] System Bundle (4.0.3.redhat-60024)