问题标签 [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 回答
2449 浏览

jdbc - 当使用来自其他包的服务接口时,OSGI 包需要 jdbc 驱动程序

我在 Fuse ESB 中部署了 3 个简单的包 WebService、DataService 和 DataSource,每个包都使用 maven 包插件构建,带有用于连接 bean 和注册服务的蓝图。数据源包包含连接详细信息并通过 JNDI 注册 Oracle jdbc 数据源。DataService 使用 OpenJPA 并具有 DAO、域实体和服务接口实现,其中一种方法可以在数据库中查询域实体并返回一个字符串。使用 Export-Package 导出服务接口。

Web 服务具有对从 DataService 包导出的服务接口的引用。

如果没有导入 oracle jdbc 驱动程序的 Web 服务包,我无法让这个设置工作 - 我认为不需要。我得到一个

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver from bundle 430 (web-service-bundle)

除非我导入oracle.jdbc.driver包,否则例外。

DataSource 包将数据源导出为 blueprint.xml 中的服务

DataService 在它的 persistence.xml 中使用哪个

此 Service 接口是从 DataService 服务包中导出的

WebService 包使用哪个

0 投票
1 回答
1024 浏览

apache-camel - 带有蓝图的 Camel FTP 组件始终运行

我正在尝试使用 camel-ftp 组件从远程 ftp 服务器获取文件。我正在使用蓝图来开发我的示例。

如果我按照组件主页中的示例(http://camel.apache.org/ftp.html)实现它,我没有问题。

我的问题是,当我只能将此组件用作消费者时,它总是在监听远程目录。

(< from uri="sftp://test@remoteServer//var/opt/test?password=secret"/>)。

我想做的是用 seda 触发这条路线,在一次运行后,它应该将文件获取到本地目录,然后继续下一条路线,如下所示(它通常不工作,因为路线中的双重来源)。

http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://camel.apache.org/schema/蓝图 http://camel.apache.org/schema/blueprint/camel-blueprint.xsd ">

0 投票
1 回答
924 浏览

osgi - 具有依赖注入的骆驼类型转换器无法实例化

我有一个 TypeConverter 类,它设置在 blueprint.xml 文件中,并通过构造函数注入依赖项。我可以验证在将 OSGI 包部署到 FuseESB 时是否创建了该类。

convertBodyTo我使用骆驼上下文中的元素应用类型转换器

但这在构造转换器时失败并出现实例化异常

如果我添加一个 noarg 构造函数,那么就会创建转换器 - 但显然没有它的依赖关系。

类型转换器的 Camel 文档http://camel.apache.org/type-converter.html指出

鼓励使用静态方法来减少缓存,但实例方法很好,特别是如果您希望允许可选的依赖注入来自定义转换器

是否可以通过 xml 定义路由并且仍然注入类型转换器依赖项?

0 投票
1 回答
569 浏览

java - 在运行时访问 OSGi 包中的 pom 属性

我不知道我正在做的是否是 OSGi 和 Maven 方式,所以先来一些背景知识:

我有两个捆绑包webclient. 在客户端包中,我想访问 Web 包注册的服务。我已经检查了我可以BundleContextAware在客户端包中实现,如果 Web 包的 ArtifactId 是project.web以下工作:

我想要的不是硬编码 web 包的符号名称。符号名称来自artifactId声明的 in pom.xml,我相信是通过一些双子蓝图魔法。所以我现在的想法是

  • web.artifactId在父 pom 中创建一个属性
  • 在 web bundle 的 pom 中使用<artifactId>${web.artifactId}</artifactId>
  • 以某种方式访问​​客户端捆绑包中的该属性BundleContextAware.setBundleContext

我该如何做这最后一步?我想有可能在运行时生成一个 java 文件,将属性值分配给某个已知的标识符,所以我可以使用WebBundleInfo.ARTIFACT_ID; 但我不知道该怎么做,我想知道这是否有点矫枉过正。

另一个想法是客户端捆绑包是否可以使用System.getProperty访问​​此值?我看到了一些关于访问属性文件的引用,但我不是很热衷于它——既不是读取属性文件,也不是生成它。

所以我的问题是: - 这是像这样共享捆绑包的符号名称的好方法吗?- 是否可以自动使 pom 文件中创建的某些属性可用于运行时执行环境?- 我想我可以弄清楚如何生成这样的源文件,但这是解决这个问题的好方法吗?有没有办法在没有源文件的情况下生成这样的文件,即从 pom.xml 本身的一些文本?此外,是否可以仅在现有文件已更改以避免重新编译时才覆盖现有文件,因为每次编译后都会以新的快照版本结束?

0 投票
1 回答
452 浏览

apache-camel - 如何使用 apache camel 蓝图创建和导出 camelProxy

我在 osgi 容器中使用骆驼蓝图和 aries 蓝图。我的配置如下

当我启动捆绑包时,它不会给出任何错误,但代理也不是作为服务创建的。如果我做错了什么,请告诉我。

我想将 Camel 代理用于端点直接:a

编辑 Camel 版本 2.11 OSGI 容器 Equinox 3.8

0 投票
1 回答
573 浏览

jboss - 使用 jms 传输的 ActiveMQ 拆分器/聚合器

我对activemq *聚合器* 有疑问,如果有人能以某种方式帮助我,我将非常感激。编组为 xml。

所以我的路线配置如下:

这很有效,它拆分了由 1k 行组成的我的 xml 消息,但不知道如何配置聚合器以便在处理它们之前将所有消息放在一起。

就是这样(不起作用):

提前致谢!

0 投票
1 回答
191 浏览

java - 使用 Springs OSGI 动态模块时是否需要 blueprint.xml?

我有一个 spring-context.xml 和一个 blueprint.xml。在 blueprint.xml 中,我正在创建一个连接到不同项目中的类的 bean。

好吧,我开始为 OSGI 使用 Springs 动态模块从 OSGI 容器(正在工作)加载配置文件,但现在我注意到创建 blueprint.xml 中定义的 bean 时出现错误

如果我在我的 spring 上下文文件中定义 OSGI 属性,我是否不再需要蓝图?

在蓝图中,我有这个

我将如何使用 OSGI 动态模块来模仿它?

0 投票
1 回答
148 浏览

blueprint-osgi - 蓝图、Spring DM 和 DS

我对蓝图、Spring DM 和 DS(声明式服务)有点困惑。

形成我认为的样子:

  1. Spring DM 最先出现。
  2. OSGi 很喜欢这个想法,并基于 Spring DM 定义了 Blueprint 标准。
  3. Spring DM 成为 Blueprint 的参考实现。

不?

DS(声明式服务)如何融入其中?

0 投票
2 回答
4156 浏览

web-services - 如何使用蓝图构建 Web 服务客户端

我们用一个 servlet 和一个 JPS 构建了一个 WAR,并使用 maven bundle 插件将其转换为一个 bundle。servlet 和 jsp 在带有 pax-web 的 Apache Karaf 中运行良好。现在我想在那个 servlet 中使用一个 Web 服务客户端。我怎样才能做到这一点?

到目前为止,我们使用 cxf-codegen maven 插件来创建构建客户端所需的所有类。我们拥有所有依赖项:cxf-rt-transports-httpcxf-rt-ws-addrcxf-rt-ws-policycxf-rt-frontend-jaxrscxf-rt-ws-securitycxf-rt- transports-http-jetty在 maven 中声明。此外,我在 blueprint.xml 中有以下条目:

当我使用这种方法时,注入失败,因为客户端始终为空。

谁能解释一下如何在 OSGi、蓝图和启用战争的捆绑包中使用 Web 服务客户端?

提前谢谢了。

干杯希尔德里希

0 投票
1 回答
1379 浏览

java - HazelcastInstance bean - 什么是正确的销毁方法?

这是一个关于如何destroy-methodHazelcastInstancebean 定义上定义 a 的问题。

自 hazelcast 1.9 以来,该HazelcastInstance.shutdown()方法已弃用

现在,似乎以下是不可能的——下面是来自 OSGI 蓝图的 bean 定义(它以类似的方式定义 bean,但不完全相同,如 spring):

通过代码关闭 hazelcastInstance 的正确方法如下:

...但是不可能destroy-method="getLifecycleService().shutdown()"在我的 bean 定义中声明。我需要一个简单的(公共的,无效的)销毁方法。

不想编写包装类,是否有适当的方法通过销毁方法销毁我的 hazelcast 实例?

注意: HazelcastClient 确实提供了shutdownAll方法,因此destroy-method="shutdownAll"在这种情况下确实是可能的。

为什么 HazelcastInstance 不一样?我错过了什么吗?

谢谢你的帮助。