微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql 数据源抛出无法创建 PoolableConnectionFactory 异常,但旧的 jdbc 连接方法仍然有效

如何解决mysql 数据源抛出无法创建 PoolableConnectionFactory 异常,但旧的 jdbc 连接方法仍然有效

环境:Tomcat 10.0.2,WEB-INF/lib中的MysqL驱动8.0.23,jdk 15,最新版本的远程MysqL数据库

我正在尝试将使用传统 jdbc DriverManager.getConnection(JDBC_URL,JDBC_USERNAME,JDBC_PASSWORD) 连接方法的旧 java 类迁移到数据源。我的 meta-inf/context.xml 有以下内容

NULL

web.xml:

<Resource name="jdbc/powerdns" 
auth="Container" 
type="javax.sql.DataSource" 
username="pdns" 
password="xxx" 
driverClassName="com.MysqL.jdbc.Driver" 
url="jdbc:MysqL:/x.x.x.x:3306/powerdns" 
maxTotal="100" 
axIdle="30" 
maxWaitMillis="10000"/>

方法

<resource-ref>
    <description>MysqL JDBC DataSource</description>
    <res-ref-name>jdbc/powerdns</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

返回这个结果: java.sql.sqlException: 无法创建 PoolableConnectionFactory(通信链接失败上次成功发送到服务器的数据包是 0 毫秒前。驱动程序没有收到来自服务器的任何数据包。)

但是,在我在同一个类中的旧方法中,这仍然有效(JDBC_URL、JDBC_USERNAME 和 JDBC_PASSWORD 定义在类的顶部):

String id = "";
try {
    Context ctx = new InitialContext();
    Context envContext = (Context) ctx.lookup("java:comp/env");
    DataSource ds = (DataSource) envContext.lookup("jdbc/powerdns");
    Connection con = ds.getConnection();
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("select name from powerdns.domains where name = 'localnet'");
    if (rs.next()) id = rs.getString("name");
} catch(NamingException e){
    id = e.toString();
} catch (sqlException e) {
    id = e.toString();
} finally{
    return id;
}

所以我在同一个应用服务器和同一个类上使用同一个驱动程序,连接(或在数据源情况下不连接)到同一个 MysqL 数据库。我应该添加调试猜测,在我的 context.xml 中,我已经编码了实际的 IP 和密码。

我被限制只能使用我的应用程序的 war 文件来做我需要的任何事情。换句话说,我无法更改 server.xml 或将库放入 tomcat 的 lib 目录中。 (系统管理员规则)

这个错误是我收到限制在我的 webapp/war 目录中还是我在我的代码中做错了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?