从JDBC模板获取连接时出错

时间:2019-02-06 10:01:31

标签: java tomcat jdbc connection jndi

我正在使用tomcat 8,并将ANT build war文件部署到先前已部署在Weblogic上的tomcat。我已经整理了大多数东西,并且在本地的Tomcat上部署也很成功。但是,当我尝试通过Postman脚本测试应用程序时,我在获取数据库连接时遇到了麻烦。错误如下:

Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null'
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null'
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:573)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:637)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:662)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:142)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:148)

//Later part of the error logs:
--------------------------------

Caused by: java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null'
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2224)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2104)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1563)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
    ... 53 more
Caused by: java.lang.NullPointerException
    at oracle.jdbc.driver.OracleDriver.acceptsURL(OracleDriver.java:981)
    at java.sql.DriverManager.getDriver(DriverManager.java:299)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2209)
    ... 57 more

请帮助我了解问题所在。我的配置如下:

web.xml:

  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/MatchDS_DEV</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

Context.xml:在tomcat / webapp / manager下

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
<Resource name="jdbc/DEV" auth="Container" type="javax.sql.DataSource"
               maxTotal="100" maxIdle="30" maxWaitMillis="10000"
               username="USER" 
               password="Admin_1" 
               driverClassName="oracle.jdbc.xa.client.OracleXADataSource"
               url="jdbc:oracle:thin:@//mcpsecv01-***/MCPRM01V"/>
</Context>

DAO类:

import javax.sql.DataSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

Class XX{

DataSource dataSource;
private NamedParameterJdbcTemplate jdbcTemplate;

public void setDataSource(DataSource dataSource) 
{
    jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}

//more source code 

//within a method, m calling this jdbcTemplate like this:
Object value = jdbcTemplate.query(params); // this is where it throws error. 


//more source code
}//End of class X

我已放置在tomcat / lib中的罐子下面:

ojdbc14,spring-jdbc-3.2.0.RELEASE,commons-dbcp2-2.1.1

0 个答案:

没有答案