如何从Connection读取池名称?

时间:2012-01-27 14:25:10

标签: java jdbc websphere

我通过多个池使用Connection:

 DataSource ds = initialContext.lookup("poolname1");
 Connection cn = ds.getConnection();
 submethod1(cn);
 submethod2(cn);

 void submethod1(Connection cn)
 {
      // using connection
      // ..
 }

我的问题是:如何在子方法中记录“poolname”?或关于DataSource的类似信息。

3 个答案:

答案 0 :(得分:1)

也许这会有所帮助

getClientInfo()

getMetaData() 

Official Java Doc

中所述

答案 1 :(得分:1)

示例中的poolname实际上是JNDI Name。这通常是在资源定义中配置的配置(在tomcat配置下的e.q)。

对于@sourlcheck提到的问题,由于连接不知道他们的数据源,所以不可能。

一旦解决您的问题,就是给数据源添加标签。大多数Pooled数据源实现(e.q。C3P0)提供了一个用于为数据源设置名称的setter。在C3P0中,datasournce类为ComboPooledDataSource,方法为getDataSourceName()。获得此名称后,它在整个生命周期内保持不变。但是当然你需要引入第三方库

答案 2 :(得分:0)

您无法在接收Connection的方法中记录“poolname”。连接不知道它们是汇集还是直接从非池化DataSource提供。

此外,您可以通过多种不同方式创建和访问您的池,而不是所有方式都保证存在“poolname”。