代码之家  ›  专栏  ›  技术社区  ›  Screwtape

如何获得对具有参数化JNDI名称的OSGi数据源的引用?

  •  0
  • Screwtape  · 技术社区  · 6 年前

    请原谅我的无知,但是在没有将名称硬编码到SpringXML定义的情况下,我找不到任何资源来描述如何获取对OSGi声明的数据源的引用。

    我正在使用TalendESBSE运行时(6.5.1),并尝试创建一个路由,该路由将被不同的OSGi数据源重新用作路由的引用数据源。

    如果,在弹簧配置中,我声明

    <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:参考元素在Spring XML中执行。

    如果有人能在这里指出正确的方向,那就太好了,因为我怀疑我可能误解了各种组件的功能。

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   c0ld    6 年前

    我认为配置属性占位符有问题,因为日志中必须有app.datasource.name属性的值,而不是属性名。尝试使用SpringXML配置 this .