DBに挿入/更新されたデータを処理するWebサービスがあります。クライアントがこのWebサービスを呼び出すと、ユーザID(現在、ポータルにログインしているユーザ)がRequestで送信されます。このユーザーIDをDb接続に渡すか、またはsysコンテキストのために、監査目的に設定する必要があります。実際のテーブルに挿入/更新した後、Auditテーブルに挿入/更新するための既存の監査テーブルとトリガがあります。これらの変更を追跡するには、このUserIdを何とか接続に渡す必要があります.Sys Contextまたは$ sessionからDBから取得してAuditテーブルに挿入することができます。私は現在、DBでデータを処理するためにSpringとHibernateトランザクションを使用しています。監査目的のためにsyscontext/ClientIdentifierをHibernateに渡すこと
Connectionでクライアント情報を設定しようとしましたが、機能しません。
Session session=sessionFactory.getCurrentSession();
SessionImpl sImpl=(SessionImpl) session;
Connection connection=sImpl.connection();
connection.setClientInfo("ClientUser", "ABC");
をし、また、私はそれが正しい方法だ場合、私は訴えるわけではないcode.butアプリケーションからDB上のたびに操作を実行する前に、ストアドプロシージャのにDBMS_APPLICATION_INFO.SET_CLIENT_INFOを呼び出すことにより、クライアント情報を設定しようとしています:私は、以下試してみましたそれを処理する。
私はOCIとシンJDBCドライバの両方で試していますが、このユーザーIDを設定する方法を見つけることができません。
sysコンテキストまたはConnectionでユーザIDを渡す効率的な方法があるかどうか知らせることができます。私は現在、hibernate4、Spring、Websphere Server、Oracle DBを使用しています。私はDB.Connectionsで操作を実行する接続とトランザクションを処理するために休止状態春@Transactionalを使用しています
は、接続プールからのものであり、私はのdataSourceためorg.springframework.jndi.JndiObjectFactoryBeanを使用しています。
私たちが接続プールから接続を取得するときに設定するために、接続の周りにインターセプタまたはラッパーを持つ方法はありますか。
誰もこれまでに行ったことはありますか?