我的連接池是Tomcat服務器的context.xml的聲明如下得到連接池的聲明用戶名:如何在運行時
<Resource name="jdbc/codesign" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@abc.fjd.com"
username="tiger" password="tiger123" maxActive="30" maxIdle="10"
poolPreparedStatements="true" maxOpenPreparedStatements="100"
validationQuery="SELECT SYSDATE FROM DUAL" maxWait="10000"/>
我初始化數據源用常規方法爲:
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
ds = (DataSource) envContext.lookup("jdbc/codesign");
我想要的是在運行時訪問用戶名(本例中爲「tiger」)。我在javax.sql.DataSource
班沒有看到任何這樣的方法。當我嘗試使用
Connection conn = DataSourceConnectionPool.getConnection()
conn.getSchema();
擺脫連接模式我獲得以下錯誤:
java.lang.AbstractMethodError: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getSchema()
如果第一個解開的連接,我得到了同樣的錯誤:
conn.unwrap(OracleConnection.class).getSchema()
java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.getSchema()
是療法從數據源或連接獲取模式名稱或用戶名的方法?
AKHIL, 這裏已經回答: * http://stackoverflow.com/questions/13341286/how-to-get-database-schema-name-when-using-oracle-jdbc-connection Cheers – 2015-03-25 11:28:34