【问题标题】:Cannot get valid datasource from context. Getting '' for connect URL 'null' exception无法从上下文中获取有效的数据源。获取 '' 连接 URL 'null' 异常
【发布时间】:2018-11-02 22:05:18
【问题描述】:

尝试在数据源上获取连接时出现异常: 无法创建
的 JDBC 驱动程序 类 '' 用于连接 URL 'null' 语境

web.xml
    </context-param>
    <resource-ref>
        <res-ref-name>jdbc/shop_MYSQL</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

Pom
    <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
            <version>8.0.20</version>
        </dependency>

       code:
        Context ctx = new InitialContext();
        ds  = (DataSource) ctx.lookup("java:comp/env/jdbc/shop_MYSQL");
        Connection conn = ds.getConnection();

【问题讨论】:

    标签: java mysql tomcat jdbc datasource


    【解决方案1】:

    您需要将 mysql 连接器 jar 添加到 Tomcat,因为它不是开箱即用的。从这里下载(适用于 MySQL 的适当版本)

    https://dev.mysql.com/downloads/connector/j

    解压下载的zip,将mysql-connector-java-x.x.xxx.jar复制到Tomcat lib文件夹(不是WEB-INF/lib)

    另外,如果您还没有,请在 Tomcat conf/context.xml 中将您的数据源定义为资源

    <Resource name="jdbc/shop_MYSQL" auth="Container" type="javax.sql.DataSource"
                       maxActive="100" maxIdle="30" maxWait="10000"
                       username="user" password="password" driverClassName="com.mysql.jdbc.Driver"
                       url="jdbc:mysql://localhost:3306/javatest"/>
    

    您的 java 代码应该可以正常工作。但是,您没有使用您定义的资源引用。你是否需要是有争议的——它是为了保持部署者/开发者角色分开,请参阅here——但假设你这样做了,你需要额外的一行来创建 java:/comp/env 上下文并对其进行查找:

    Context ctx = new InitialContext();
    Context envCtx  = (Context) ctx.lookup("java:/comp/env");
    ds  = (DataSource) envCtx.lookup("jdbc/shop_MYSQL");
    Connection conn = ds.getConnection();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 2019-01-31
      • 2012-03-06
      • 2013-08-03
      • 2018-03-18
      • 2019-03-10
      • 1970-01-01
      相关资源
      最近更新 更多