问题描述
我正在使用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
中不存在此功能。