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

时间:2018-01-02 15:38:13

标签: java apache-camel osgi jbossfuse blueprint-osgi

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

在另一个包的蓝图中有对所述DataSource的引用:

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

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

1 个答案:

答案 0 :(得分:2)

您可以创建自定义Bean:

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

Java代码:

public class MyDsBean {

    private JdbcTemplate myds;

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

我的示例是使用JdbcTemplate,但您可以将其替换为您想要使用的内容。