Java 如何在WAS6.1中获取数据源的属性
我正在将一个应用程序从WAS4迁移到WAS6.1 一段代码如下所示:Java 如何在WAS6.1中获取数据源的属性,java,Java,我正在将一个应用程序从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 Has
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
)当我尝试打印时
我应该如何获取和打印数据源的所有属性?您的主要目标是什么?数据源本身不会公开您要查找的属性。您可能被aResultHandler API弄糊涂了 我首先要说的是,您需要摆脱aResultHandler API,或者重构它以利用数据源 如果你没有这个选择,无论出于什么疯狂的原因,下面是另一个选择。不确定这是否有效
依赖于toString()是一个错误的选择,因此您将陷入这一困境。我建议您尝试将从JNDI查找返回的数据源强制转换为WAS实现类(do ds.getClass()以查看实际的impl类),并查看这些属性是否以某种方式公开。在获取数据源
ds
后,您可以获得如下数据库信息:
DatabaseMetaData md = ds.getConnection().getMetaData();
有很多方法可供使用,您可以从中获取列表。@Pangea
在Was4中,ds.toString()以可读的格式提供数据源的详细信息
然后格式化以显示属性..如
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
不要将后续问题作为单独的帖子发布。这应该是一个评论。无论如何,我更新了我的帖子,提供了更多信息。