Java 如何在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

我正在将一个应用程序从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
)当我尝试打印时


我应该如何获取和打印数据源的所有属性?

您的主要目标是什么?数据源本身不会公开您要查找的属性。您可能被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 

不要将后续问题作为单独的帖子发布。这应该是一个评论。无论如何,我更新了我的帖子,提供了更多信息。