Connection Pooling在Glassfish 3.1.2中遇到ClassCastException

时间:2012-09-18 05:50:24

标签: java glassfish-3

我在Glassfish 3.1.2中创建了一个名为'userdb'的连接池和一个名为'userdbresource'的数据源。在创建数据源时,我在管理控制台中将类型命名为“javax.sql.Datasource”。

在我的REST网络服务中,我编写了以下代码

         DataSource ds = null;
        try
        {
        InitialContext ctx = new InitialContext();


            ds = (DataSource) ctx.lookup("userdbresource");
        }
        catch (NamingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Connection con = (Connection) ds.getConnection();
        Statement stmt=con.createStatement();

我总是在Connection con = (Connection) ds.getConnection();

获得ClassCast异常

我已将以下内容添加到web.xml

 <resource-ref>
        <res-ref-name>userdbresource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

但没有变化。我在使用com.mysql.jdbc.Connection查找之后尝试解开连接。但没有变化。

日志中的实际classcast异常是

java.lang.ClassCastException: com.sun.gjc.spi.jdbc40.ConnectionHolder40 cannot be cast to com.mysql.jdbc.Connection

如果有人知道我需要做什么更改才能使用我从池中检索的连接,请告诉我!!

由于 卡维塔

1 个答案:

答案 0 :(得分:2)

import java.sql.Connection;不是jdbc连接,你不需要任何连接转换 并且您的数据源连接变为

Connect con = ds.getConnection();