Установите перехватчик jdbc с помощью класса DriverManager

Я использую 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 свойствами.


person Knot    schedule 11.08.2020    source источник
comment
Каково полное имя этого DataSource?   -  person Mark Rotteveel    schedule 11.08.2020
comment
добавил в вопрос   -  person Knot    schedule 11.08.2020


Ответы (1)


Эти перехватчики являются особенностью Tomcat org.apache.tomcat.jdbc.pool.DataSourceProxy и его подкласса org.apache.tomcat.jdbc.pool.DataSource. Это не функция самого JDBC и не функция используемого вами драйвера JDBC, поэтому единственный способ получить к ней доступ — через источник данных Tomcat.

Короче говоря, это не работает с DriverManager, потому что этой функции нет в DriverManager.

person Mark Rotteveel    schedule 11.08.2020