以编程方式获取数据源

时间:2013-08-14 09:13:06

标签: java java-ee

我在任何应用程序服务器/ Web服务器上部署了Java / Java EE中的Web应用程序。我想在我的应用程序中获取此服务器上配置的所有数据源。

有没有人有任何想法来实现它?我可以通过WLST ant任务获得那些。但我需要以编程方式获取它们。

2 个答案:

答案 0 :(得分:1)

如果您的数据源配置了JNDI,那么您可以列出上下文并可以使用Context.list()方法获取所有名称(更多来自here),并从这些名称中找到所有数据源

Context.list()返回NameClassPair的枚举。每个NameClassPair都包含对象的名称和类名。所以只需迭代它并检查java.sql.DataSource的类名,然后获取对象名以检索它。

答案 1 :(得分:0)

使用JBoss,您可以执行以下操作(假设JMX可用):

Context ctx = new InitialContext();
MBeanServerConnection mconn = (MBeanServerConnection)ctx.lookup("jmx/invoker/RMIAdaptor");
ObjectName name = new ObjectName("jboss.jca:service=DataSourceBinding,*");
Set s = mconn.queryMBeans(name, null);

s是mbeans集合。