我通过多个池使用Connection:
DataSource ds = initialContext.lookup("poolname1");
Connection cn = ds.getConnection();
submethod1(cn);
submethod2(cn);
void submethod1(Connection cn)
{
// using connection
// ..
}
我的问题是:如何在子方法中记录“poolname”?或关于DataSource的类似信息。
答案 0 :(得分:1)
答案 1 :(得分:1)
示例中的poolname实际上是JNDI Name。这通常是在资源定义中配置的配置(在tomcat配置下的e.q)。
对于@sourlcheck提到的问题,由于连接不知道他们的数据源,所以不可能。
一旦解决您的问题,就是给数据源添加标签。大多数Pooled数据源实现(e.q。C3P0)提供了一个用于为数据源设置名称的setter。在C3P0中,datasournce类为ComboPooledDataSource
,方法为getDataSourceName()
。获得此名称后,它在整个生命周期内保持不变。但是当然你需要引入第三方库
答案 2 :(得分:0)
您无法在接收Connection的方法中记录“poolname”。连接不知道它们是汇集还是直接从非池化DataSource提供。
此外,您可以通过多种不同方式创建和访问您的池,而不是所有方式都保证存在“poolname”。