尝试使用jTDS JDBC驱动程序连接到(本地)SQL数据库。
JAVA CODE
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
希望得到一些帮助。
提前致谢。
答案 0 :(得分:1)
Tomcat不允许您直接访问JtdsDataSource
。它仅使用该数据源来填充其内部DBCP数据源。当您使用JNDI请求数据源时,您将获得DBCP数据源。
顺便说一句:(通常)没有理由为什么要投射到javax.sql.DataSource
以外的任何其他界面。解决方案是转换为该接口(javax.sql.DataSource
)。