从Tomcat - ComboPooledDataSource转换JDBC JNDI数据源

时间:2015-10-09 09:08:06

标签: java tomcat jdbc

有人可以让我摆脱痛苦,并解释为什么会发生这种情况以及如何解决这个问题。

  1. 一个tomcat数据源

    <Resource name="MY_JDBC_NAME" auth="Container"
      driverClass="oracle.jdbc.OracleDriver"
      jdbcUrl="MyURL"
      user="MyUser"
      password="MyPassword"                                                     
      factory="org.apache.naming.factory.BeanFactory"
      type="com.mchange.v2.c3p0.ComboPooledDataSource"
      maxPoolSize="25"   
      minPoolSize="5"
      acquireIncrement="1"
      acquireRetryAttempts = "2"
      idleConnectionTestPeriod = "60"
      testConnectionOnCheckout = "true"
      preferredTestQuery = "SELECT 1 FROM DUAL"
    

    /&GT;

  2. 查询

    ComboPooledDataSource ds = (ComboPooledDataSource) ctx.lookup(     "java:comp/env/MY_JNDI_NAME");
    
  3. 这导致令人困惑的

    java.lang.ClassCastException: com.mchange.v2.c3p0.ComboPooledDataSource cannot be cast to com.mchange.v2.c3p0.ComboPooledDataSource
    

    提前致谢

1 个答案:

答案 0 :(得分:0)

我正在使用这个, 可能它也适合你,试试这个,

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

...

Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:comp/env");
DataSource ds = (DataSource) envContext.lookup("MY_JDBC_NAME");