【问题标题】:How to use an OSGI reference from another bundle in java如何在 java 中使用来自另一个包的 OSGI 引用
【发布时间】:2018-06-12 07:41:54
【问题描述】:
我正在使用 JBoss Fuse,我创建了一个导出 DataSouce 的包,现在我想查询它。
在另一个包的蓝图中有对所述数据源的引用:
<reference
id="myDataSource"
filter="(osgi.jndi.service.name=myDataSouce)"
interface="javax.sql.DataSource"
/>
如何从 java 代码中访问此引用以便查询它?
【问题讨论】:
标签:
java
apache-camel
osgi
jbossfuse
blueprint-osgi
【解决方案1】:
您可以创建自定义 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,但您可以将其替换为您想要使用的任何内容。