问题标签 [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.
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 包使用哪个
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 ">
osgi - 具有依赖注入的骆驼类型转换器无法实例化
我有一个 TypeConverter 类,它设置在 blueprint.xml 文件中,并通过构造函数注入依赖项。我可以验证在将 OSGI 包部署到 FuseESB 时是否创建了该类。
convertBodyTo
我使用骆驼上下文中的元素应用类型转换器
但这在构造转换器时失败并出现实例化异常
如果我添加一个 noarg 构造函数,那么就会创建转换器 - 但显然没有它的依赖关系。
类型转换器的 Camel 文档http://camel.apache.org/type-converter.html指出
鼓励使用静态方法来减少缓存,但实例方法很好,特别是如果您希望允许可选的依赖注入来自定义转换器
是否可以通过 xml 定义路由并且仍然注入类型转换器依赖项?
java - 在运行时访问 OSGi 包中的 pom 属性
我不知道我正在做的是否是 OSGi 和 Maven 方式,所以先来一些背景知识:
我有两个捆绑包web
和client
. 在客户端包中,我想访问 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 本身的一些文本?此外,是否可以仅在现有文件已更改以避免重新编译时才覆盖现有文件,因为每次编译后都会以新的快照版本结束?
apache-camel - 如何使用 apache camel 蓝图创建和导出 camelProxy
我在 osgi 容器中使用骆驼蓝图和 aries 蓝图。我的配置如下
当我启动捆绑包时,它不会给出任何错误,但代理也不是作为服务创建的。如果我做错了什么,请告诉我。
我想将 Camel 代理用于端点直接:a
编辑 Camel 版本 2.11 OSGI 容器 Equinox 3.8
jboss - 使用 jms 传输的 ActiveMQ 拆分器/聚合器
我对activemq *聚合器* 有疑问,如果有人能以某种方式帮助我,我将非常感激。编组为 xml。
所以我的路线配置如下:
这很有效,它拆分了由 1k 行组成的我的 xml 消息,但不知道如何配置聚合器以便在处理它们之前将所有消息放在一起。
就是这样(不起作用):
提前致谢!
java - 使用 Springs OSGI 动态模块时是否需要 blueprint.xml?
我有一个 spring-context.xml 和一个 blueprint.xml。在 blueprint.xml 中,我正在创建一个连接到不同项目中的类的 bean。
好吧,我开始为 OSGI 使用 Springs 动态模块从 OSGI 容器(正在工作)加载配置文件,但现在我注意到创建 blueprint.xml 中定义的 bean 时出现错误
如果我在我的 spring 上下文文件中定义 OSGI 属性,我是否不再需要蓝图?
在蓝图中,我有这个
我将如何使用 OSGI 动态模块来模仿它?
blueprint-osgi - 蓝图、Spring DM 和 DS
我对蓝图、Spring DM 和 DS(声明式服务)有点困惑。
形成我认为的样子:
- Spring DM 最先出现。
- OSGi 很喜欢这个想法,并基于 Spring DM 定义了 Blueprint 标准。
- Spring DM 成为 Blueprint 的参考实现。
不?
DS(声明式服务)如何融入其中?
web-services - 如何使用蓝图构建 Web 服务客户端
我们用一个 servlet 和一个 JPS 构建了一个 WAR,并使用 maven bundle 插件将其转换为一个 bundle。servlet 和 jsp 在带有 pax-web 的 Apache Karaf 中运行良好。现在我想在那个 servlet 中使用一个 Web 服务客户端。我怎样才能做到这一点?
到目前为止,我们使用 cxf-codegen maven 插件来创建构建客户端所需的所有类。我们拥有所有依赖项:cxf-rt-transports-http、cxf-rt-ws-addr、cxf-rt-ws-policy、cxf-rt-frontend-jaxrs、 cxf-rt-ws-security和cxf-rt- transports-http-jetty在 maven 中声明。此外,我在 blueprint.xml 中有以下条目:
当我使用这种方法时,注入失败,因为客户端始终为空。
谁能解释一下如何在 OSGi、蓝图和启用战争的捆绑包中使用 Web 服务客户端?
提前谢谢了。
干杯希尔德里希
java - HazelcastInstance bean - 什么是正确的销毁方法?
这是一个关于如何destroy-method
在HazelcastInstance
bean 定义上定义 a 的问题。
自 hazelcast 1.9 以来,该HazelcastInstance.shutdown()
方法已弃用。
现在,似乎以下是不可能的——下面是来自 OSGI 蓝图的 bean 定义(它以类似的方式定义 bean,但不完全相同,如 spring):
通过代码关闭 hazelcastInstance 的正确方法如下:
...但是不可能destroy-method="getLifecycleService().shutdown()"
在我的 bean 定义中声明。我需要一个简单的(公共的,无效的)销毁方法。
不想编写包装类,是否有适当的方法通过销毁方法销毁我的 hazelcast 实例?
注意: HazelcastClient 确实提供了shutdownAll方法,因此destroy-method="shutdownAll"
在这种情况下确实是可能的。
为什么 HazelcastInstance 不一样?我错过了什么吗?
谢谢你的帮助。