2012-09-18 91 views
0

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

在我的REST Web服务我写了下面的代码

  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 

如果有谁知道什么样的变化我需要用我从池中获取连接,请让我知道!

感谢 卡维塔

回答

2

import java.sql.Connection;没有JDBC连接因此你不会需要任何连接铸造 和您的数据源的连接变得

Connect con = ds.getConnection(); 
+0

非常感谢! – kavita

+0

你是wlc @ kavita – mykey