使用DriverManager类设置jdbc拦截器

问题描述

我正在使用DriverManager.getConnection(url,prop)来建立连接。我正在尝试使用类似下面的属性注入jdbc拦截器,但是它不起作用。

Properties prop = new Properties();
...
prop.setProperty("jdbcInterceptors","com.amazonaws.xray.sql.mysql.TracingInterceptor;");

但是,当我们尝试通过数据源进行操作时,它正在起作用。

import org.apache.tomcat.jdbc.pool.DataSource;
DataSource source = new DataSource();
source.setUrl("url");
source.setUsername("user");
source.setPassword("password");
source.setDriverClassName("com.mysql.jdbc.Driver");
source.setJdbcInterceptors("com.amazonaws.xray.sql.mysql.TracingInterceptor;");

不确定DriverManager属性有什么问题。

解决方法

这些拦截器是Tomcat org.apache.tomcat.jdbc.pool.DataSourceProxy及其子类org.apache.tomcat.jdbc.pool.DataSource的功能。这不是JDBC本身的功能,也不是您正在使用的JDBC驱动程序的功能,因此访问它的唯一方法是通过Tomcat数据源。

简而言之,它不适用于DriverManager,因为DriverManager中不存在此功能。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...