gpt4 book ai didi

tomcat - tomcat jdbc连接池中的JavaMelody集成

转载 作者:行者123 更新时间:2023-11-28 22:01:33 26 4
gpt4 key购买 nike

我正在尝试将 JDBC 监控集成到 JavaMelody 中。我使用 Tomcat jdbc 池连接。我的设置是这样的(简化):

Properties props = new Properties();
props.setProperty("driver", "com.mysql.jdbc.Driver");

PoolConfiguration p = new PoolProperties();
p.setDriverClassName("net.bull.javamelody.JdbcDriver");
p.setDbProperties(props);
p.setUsername("myusername");
p.setPassword("mypassword");
p.setUrl(connectionParameters.getUrl());

org.apache.tomcat.jdbc.pool.DataSource dataSource = new org.apache.tomcat.jdbc.pool.DataSource();

dataSource.setPoolProperties(p);

(我更喜欢这种设置,而不是 web.xml 中的 描述)

我得到以下异常

java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3306/mydatabase?autoReconnect=true&characterEncoding=UTF-8 at java.sql.DriverManager.getConnection(DriverManager.java:596) at java.sql.DriverManager.getConnection(DriverManager.java:187) at net.bull.javamelody.JdbcDriver.connect(JdbcDriver.java:83) at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278) at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182) at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701) at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635) at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486) at org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:144) at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116) at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103) at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127) at  ... (my methods)

如果没有 javamelody 运行良好,javamelody 通常运行良好。

我做错了什么?有什么想法吗?

最佳答案

net.bull.javamelody.JdbcDriver 支持获取“驱动程序”属性以创建代理连接 here .我没有遇到与您发布的代码相同的“没有合适的驱动程序”投诉,只是没有错误,但没有按预期工作。我的连接没有计算在内。

所以我从存储库中找到了所有用例,最后,我找到了 this test code .以下是我的工作案例:

import javax.sql.DataSource;
import net.bull.javamelody.JdbcWrapper;

PoolProperties p = new PoolProperties();
p.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
p.setDriverClassName("org.postgresql.Driver");
p.setUrl(getLoginUrl());

org.apache.tomcat.jdbc.pool.DataSource orgDataSource = new org.apache.tomcat.jdbc.pool.DataSource();
orgDataSource.setPoolProperties(p);

DriverManager.registerDriver(new net.bull.javamelody.JdbcDriver());
datasource = JdbcWrapper.SINGLETON.createDataSourceProxy(app_name, orgDataSource);

这段代码中的技巧是JDBC wrapper.SINGLETON.createDataSourceProxy。它创建另一个池对象,代理原始池设置并在那里处理驱动程序连接。

关于tomcat - tomcat jdbc连接池中的JavaMelody集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40752196/

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