我有一个 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);
}
}
关于如何做到这一点有什么想法吗?
最佳答案
您始终可以在代码中执行 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);
}
}
关于java - 在spring中以编程方式获取JNDI资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003612/