如何获得对具有参数化 JNDI 名称的 OSGi 数据源的引用?
How to obtain a refrence to an OSGi Datasource with parameterised JNDI name?
请原谅我的无知,但我找不到任何资源来描述如何在不对 Spring XML 定义中的名称进行硬编码的情况下获取对 OSGi 声明的数据源的引用。
我正在使用 Talend ESB SE 运行时 (6.5.1),并尝试创建一个路由,该路由将与不同的 osgi 数据源一起作为路由的引用数据源重复使用。
如果,在Spring配置中我声明
<osgi:reference id="dataSource" interface="javax.sql.DataSource" filter="(osgi.jndi.service.name=myDataSourceName)" />
这行得通。但是,我看不到任何参数化方法,因为当我尝试使用
<osgi:reference id="dataSource" interface="javax.sql.DataSource" filter="(osgi.jndi.service.name=${app.datasource.name})" />
karaf 日志抱怨它找不到名为 ${app.datasource.name}
的服务,显然它不会找到。
如果参数不能在 osgi 引用的过滤器中使用,那么我可以在 Java 中配置它,但我在任何地方都看不到如何从 Camel 上下文注册表获取底层 OSGi注册表 - osgi:reference 元素在 Spring XML.
中执行的操作
如果有人能在这里指出正确的方向,那就太好了,因为我怀疑我可能误解了各个组件的功能。
谢谢!
我认为这是配置 属性 占位符的问题,因为日志中必须有您的 app.datasource.name 属性 的值,而不是 属性 名称。尝试使用 spring xml 配置,如 this。
请原谅我的无知,但我找不到任何资源来描述如何在不对 Spring XML 定义中的名称进行硬编码的情况下获取对 OSGi 声明的数据源的引用。
我正在使用 Talend ESB SE 运行时 (6.5.1),并尝试创建一个路由,该路由将与不同的 osgi 数据源一起作为路由的引用数据源重复使用。
如果,在Spring配置中我声明
<osgi:reference id="dataSource" interface="javax.sql.DataSource" filter="(osgi.jndi.service.name=myDataSourceName)" />
这行得通。但是,我看不到任何参数化方法,因为当我尝试使用
<osgi:reference id="dataSource" interface="javax.sql.DataSource" filter="(osgi.jndi.service.name=${app.datasource.name})" />
karaf 日志抱怨它找不到名为 ${app.datasource.name}
的服务,显然它不会找到。
如果参数不能在 osgi 引用的过滤器中使用,那么我可以在 Java 中配置它,但我在任何地方都看不到如何从 Camel 上下文注册表获取底层 OSGi注册表 - osgi:reference 元素在 Spring XML.
中执行的操作如果有人能在这里指出正确的方向,那就太好了,因为我怀疑我可能误解了各个组件的功能。
谢谢!
我认为这是配置 属性 占位符的问题,因为日志中必须有您的 app.datasource.name 属性 的值,而不是 属性 名称。尝试使用 spring xml 配置,如 this。