[英]how to get the properties of a datasource in WAS 6.1
我正在将一个应用程序从WAS4迁移到WAS6.1
一段代码如下:
javax.naming.Context ctx = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup(JNDI_NAME);
dsvalue_data = new Hashtable();
confvalue_data = new Hashtable();
// Parse the datasource string and get the properties
// writeInfo will return the name of the datasource and will populate the
// dsvalue_data and confvalue_data hashtables with datasource and
// connection pool properties
String tableHeader = writeInfo(ds.toString());
aResultHandler.addObject(CV_ABOUT_DESC,tableHeader);
aResultHandler.addObject(CV_ABOUT_PAGE,dsvalue_data);
.....
.....
问题出在WAS6.1中,此ds.toString()
并未提供数据源的人类可读属性
当我尝试打印时,它只是给出对象名称(例如com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource@a21fg7
)。
我应该怎么做才能获取并打印数据源的所有属性?
获得数据源ds
,您可以获取如下数据库信息:
DatabaseMetaData md = ds.getConnection().getMetaData();
有很多方法可以使用,您可以从官方文档中获取列表。
您的主要目标是什么? 这样的DataSource不会公开您要查找的属性。 可能是您对aResultHandler API感到困惑。
我首先要说的是,您需要摆脱aResultHandler API或对其进行重构以利用DataSource。
如果出于任何疯狂原因您没有该选项,则下面是另一个选项。 不知道这是否有效。
依赖于toString()是一个错误的选择,因此您会遇到麻烦。 我建议您尝试将从JNDI查找返回的数据源强制转换为WAS实现类(执行ds.getClass()以查看实际的impl类),并查看这些属性是否以某种方式公开。
@Pangea
在Was4中,ds.toString()以可读格式提供数据源的详细信息
然后将其格式化以显示属性..like
errorMap = null
logOrphan = false
connTimeout = 180
TransactionBranchesLooselyCoupled = false
resetReadOnly = false
maxConnectionPoolSize = 10
autoConnectionCleanupDisabled = false
minConnectionPoolSize = 1
secureXACredential = false
surgeThreshold = -1
informixLockModeWait = 0
dataBaseVersion = 0
validationSQL = null
oracleStmtCacheSize = 0
orphanTimeout = 1800
stuckThreshold = -1
surgeTime = 20
stuckTime = 30
diagOptions = 0
connectionValidation = false
maxStatementCacheSize = 10
stuckTimerTime = 5
idleTimeout = 1800
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.