我有一个Tomcat servlet容器,其中包含由Tomcat连接池管理的DataSource
列表。从我的Spring应用程序(Spring 3.2.3)开始,我想在运行时获得其中一个数据源,如:
public class MyService {
@Autowired
private JndiObjectLocator jndiLocator;
public void myMethod(String jndiName) {
DataSource myDataSource = jndiLocator.locate(jndiName);
}
}
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
您可以随时在代码中执行JNDI查找,然后可以使用JndiDataSourceLookup
并调用getDataSource()
方法。
public class MyService {
@Autowired
private JndiDataSourceLookup lookup;
public void myMethod(String jndiName) {
DataSource myDataSource = lookup.getDataSourcejndiName);
}
}
另一个选择是让你的bean知道BeanFactory
并从那里检索DataSource
。
public class MyService {
@Autowired
private BeanFactory factory;
public void myMethod(String jndiName) {
DataSource myDataSource = factory.getBean(jndiName, DataSource.class);
}
}