数据源与连接池
java.lang.ClassCastException本帖最后由 gaopei1991 于 2012-12-15 13:46:42 编辑
tomcat 6.0 jdbc 连接 sql2005 配置如下:
context.xml:
<Resource name="jdbc/sql2005"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DatabaseName=test"
username="sa"
password="sasa"
maxActive="100"
maxidle="30"
maxWait="10000"
factory="org.apache.tomcat.dbcp.dbcp.PoolingDataSource"/>
web.xml:
<resource-ref>
<description>sql Connection</description>
<res-ref-name>jdbc/sql2005</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
go.get():
initCon = new InitialContext();
Context envCon = (Context) initCon.lookup("java:comp/env");
DataSource ds = (DataSource) envCon.lookup("jdbc/sql2005");
if(ds != null) {
Connection conn = (Connection) ds.getConnection();
System.out.println("找到数据源" + conn);
}
结果就报错:
org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to Connection
Conn.doGet(Conn.java:36)
------解决方案--------------------org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to Connection
你这个DataSource 应该是用错包了, Connection conn = (Connection) ds.getConnection();
不能把这个转换为Connection类型
------解决方案--------------------类型转换异常,可以Debug下Connection conn = (Connection) ds.getConnection(),
看看ds是什么,ds.getConnection()又是什么。