2016-05-01 5 views
0

У меня есть веб-служба, которая обрабатывает вставки/обновления данных в БД. Когда клиент вызывает этот веб-сервис, UserId (в настоящее время зарегистрированный пользователь на портал) будет отправлен в запрос. Мне нужно передать это подключение userId к Db или установить его в sys context для Цель аудита. у нас есть существующие таблицы аудита и триггеры для вставки/обновления в таблицу аудита после вставки/обновления в фактической таблице. Поэтому для отслеживания этих изменений мне нужно передать этот UserId каким-либо образом на соединение, чтобы его можно было получить из БД из Sys Context или $ session и вставить в таблицу Audit. В настоящее время я использую транзакции Spring и Hibernate для обработки данных с помощью БД.Передача ClientInfo/ClientIdentifier в syscontext/соединение с Hibernate для целей аудита

Я попытался установить информацию о клиенте в Connection, но он не работает. Я попытался ниже:

Session session=sessionFactory.getCurrentSession(); 
SessionImpl sImpl=(SessionImpl) session; 
Connection connection=sImpl.connection(); 
connection.setClientInfo("ClientUser", "ABC"); 

А также я пытаюсь установить данные клиента с помощью вызова хранимой процедуры, DBMS_APPLICATION_INFO.SET_CLIENT_INFO перед выполнением операции по БД каждый раз, когда от применения code.but я не посудить, если это правильный путь чтобы справиться с этим.

Я пытаюсь использовать оба OCI и тонкие драйверы JDBC, но не могу найти способ установить этот идентификатор пользователя.

Может ли кто-нибудь сообщить мне, есть ли эффективный способ передать идентификатор пользователя в контексте sys или в Connection. В настоящее время я использую hibernate4, Spring, Websphere Server, Oracle DB.

Я использую Spring @Transactional для обработки Hibernate соединений и операции для выполнения операции по DB.Connections взято из пула подключений, и я использую org.springframework.jndi.JndiObjectFactoryBean для DATASOURCE.

есть ли способ иметь перехватчик или обертку вокруг соединения, чтобы установить его, когда мы получим соединение из пула соединений.

Кто-нибудь сделал это раньше?

ответ

1

Это описано в spring data JDBC Extensions for the Oracle Database

Глава

8,2 Конфигурация пользовательских DataSource Подключение Preparer

... но вы могли бы реализовать ConnectionPreparer, который будет использовать текущие пользователи Идентификатор. Таким образом, вы можете записывать информацию для входа в систему, даже если ваш источник данных настроен с общим именем пользователя.

Это решение для оракула, которое, как я думаю, вы используете. Также возможно адаптировать это к другой базе данных.

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

  • Нет связанных вопросов^_^