gpt4 book ai didi

java - 无法从上下文中获取有效的数据源。获取连接 URL '' 异常的 'null'

转载 作者:行者123 更新时间:2023-11-28 22:24:55 25 4
gpt4 key购买 nike

尝试在数据源上获取连接时出现异常:无法创建
的 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();

最佳答案

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

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

解压下载的zip并将mysql-connector-java-x.x.xxx.jar复制到Tomcatlib文件夹(不是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();

关于java - 无法从上下文中获取有效的数据源。获取连接 URL '' 异常的 'null',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50496453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com