我需要在运行时将 PoolableConnection 转换为 OracleConnection,但我不知道该怎么做。 因为我得到了 classCastException,如果所有类都扩展了 Connection,我可以这样做吗?
最佳答案
您应该能够转换为特定于 DBCP 的连接类,并从那里检索内部 Oracle 连接:
import org.apache.commons.dbcp.DelegatingConnection;
DelegatingConnection dc = (DelegatingConnection)conn;
OracleConnection oc = (OracleConnection)pc.getInnermostDelegate();
如果您使用的是 Tomcat 的内置 DBCP 副本,那么您需要的导入是:
import org.apache.tomcat.dbcp.dbcp.DelegatingConnection;
或者您可以使用内置于 Oracle JDBC 驱动程序实现中的连接池。这将返回一个 Oracle 连接。一个简单的设置是:
<Resource auth="Container"
connectionCacheName="CXCACHE"
connectionCacheProperties="{MaxStatementsLimit=5,MinLimit=1, MaxLimit=1, ValidateConnection=true}"
connectionCachingEnabled="true"
description="Oracle Datasource"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
name="jdbc/TestDB"
user="default_user"
password="password"
type="oracle.jdbc.pool.OracleDataSource"
url="jdbc:oracle:thin:@//localhost:1521/orcl"
/>
关于java - 如何将 dbcp 连接转换为 oracle 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31294979/