【发布时间】:2017-05-05 01:05:33
【问题描述】:
我正在将 Web 应用程序 (WAR) 部署到 Tomcat 8 Web 容器。
WAR 在 '/WEB-INF/lib' 目录中包含以下 jTDS JDBC 驱动程序:
<dependency org="net.sourceforge.jtds" name="jtds" rev="1.3.1" />
(文件为:jtds-1.3.1.jar)。
这是META-INF/context.xml中定义资源的方式:
<Resource name="jdbc/jtds/sybase/somedb"
auth="Container"
type="javax.sql.DataSource"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sybase://localhost:2501/somedb"
username="someuser" password="somepassword"
/>
在我的代码中,我以正常方式获得javax.sql.DataSource:
InitialContext cxt = new InitialContext();
if ( cxt == null ) {
throw new RuntimeException("Uh oh -- no context!");
}
DataSource ds = (DataSource) cxt.lookup( lookupName );
我进一步验证(通过打印)DataSource 对象ds 是预期的类型:
org.apache.tomcat.dbcp.dbcp2.BasicDataSource
…但是当我尝试从中获得连接时:
Connection conn = ds.getConnection();
…我得到以下跟踪:
java.lang.AbstractMethodError
net.sourceforge.jtds.jdbc.JtdsConnection.isValid(JtdsConnection.java:2833)
org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:924)
org.apache.tomcat.dbcp.dbcp2.PoolableConnection.validate(PoolableConnection.java:282)
org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:359)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2316)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2299)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2043)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1543)
什么给了?
【问题讨论】: