在Spring中以编程方式获取JNDI资源

时间:2014-06-02 21:30:20

标签: java spring tomcat jndi

我有一个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);
    }
}

关于如何做到这一点的任何想法?

1 个答案:

答案 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);
    }
}