2014-04-01 106 views
1

嘗試使用jTDS JDBC驅動程序連接到(本地)SQL數據庫。org.apache.tomcat.dbcp.dbcp.BasicDataSource不能轉換爲net.sourceforge.jtds.jdbcx.JtdsDataSource

Java代碼

private JtdsDataSource dataSource = null; 

public Connection getConnection() throws SQLException, NamingException { 
     ... 
     Context initContext = new InitialContext(); 
     dataSource = (JtdsDataSource) initContext.lookup("java:comp/env/jdbc/postcodes"); 
     conn = dataSource.getConnection(); 
       ... 
    } 

的context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
    <Resource name="jdbc/postcodes" 
       auth="Container" 
       type="javax.sql.DataSource" 
       username="user" 
       password="pass" 
       driverClassName="net.sourceforge.jtds.jdbcx.JtdsDataSource" 
       url="jdbc:jtds:sqlserver://localhost:1433/AUSPostcodes" 
       validationQuery="select 1" 
       maxActive="10" 
       maxIdle="4"/> 
</Context> 

當我在Tomcat上運行此,收到以下錯誤....

java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.BasicDataSource cannot be cast to net.sourceforge.jtds.jdbcx.JtdsDataSource 

會感謝一些幫助。

在此先感謝。

回答

1

Tomcat不允許您直接訪問JtdsDataSource。它只使用該數據源來填充其內部DBCP數據源。當你使用JNDI來請求數據源時,你會得到DBCP數據源。

順便說一句:除了javax.sql.DataSource之外,通常沒有理由將其投射到任何其他界面。其解決方案是投射到該界面(javax.sql.DataSource)。

+0

完美!謝謝。 – user2809072

相關問題