2011-01-06 4 views
0

Наши веб-клиенты в настоящее время напрямую обращаются к JDBC-вызовам в нашу базу данных Oracle. Мы связываем каждое соединение с вызовами пакета DBMS_APPLICATION_INFO в статическом методе getConnection (String client), например.Использование пакета Oracle DBMS_APPLICATION_INFO с Spring JDBC

CallableStatement pstmt = conx.prepareCall("{call DMBS_APPLICATION_INFO.SET_CLIENT_INFO(?)}"); 
pstmt.setString(1, "my client"); 
pstmt.executeUpdate(); 

Это оказалось полезным время от времени, и мы хотели бы продолжить это, когда мы переходим к Spring JDBC.

Я думаю, что если бы мы сделали каждый запрос транзакцией, а затем совершили вызовы в DBMS_APPLICATION_INFO перед выполнением запроса (или запросов), это сработало бы, но для этого потребовалось бы добавить вышеуказанный код в каждое место, где мы получаем соединение сейчас. Вне транзакции это не представляется возможным, потому что Spring JDBC открывает и закрывает соединение с каждым запросом.

Весной JDBC есть способ совершать вызовы в DBMS_APPLICATION_INFO под капотом, как сейчас, передавая строку, с которой следует пометить соединение?

Спасибо!

ответ

0

Ответ на мой вопрос - нет. Если бы я решал этот вопрос сегодня, я бы, вероятно, посмотрел на создание перехватчика для пула JDBC Tomcat или обертывание драйвера. На самом деле, скорее всего, я бы отказался от использования DBMS_APPLICATION_INFO. Хотя приятно иметь это, было не полезно для работы, не стоит добавлять код и сложность.

Смежные вопросы