如何在 Java 中使用来自另一个bundle的 OSGI 引用



我在使用 JBoss Fuse 时,创建了一个导出 DataSouce 的捆绑包,现在我想查询它。

在另一个捆绑包的蓝图中有一个对所述数据源的引用:

  <reference 
      id="myDataSource"
      filter="(osgi.jndi.service.name=myDataSouce)" 
      interface="javax.sql.DataSource"
  />

如何从 java 代码访问此引用以便查询它?

您可以创建自定义 Bean:

<bean id="myDsBean" class="my.company.MyDsBean">
    <property name="dataSource" ref="myDataSource" />
</bean>

爪哇代码:

public class MyDsBean {
    private JdbcTemplate myds;
    public void setDataSource(DataSource ds) {
        this.myds = new JdbcTemplate(ds);
    }
    // Code to query data source
}

我的例子是使用JdbcTemplate但你可以用它代替你想使用的任何内容。

最新更新