Java EE 应用中对前端用户的数据库操作的审计
2010-09-26 00:00:00 来源:WEB开发网那如何看到每个 client_id 执行的 sql 呢?需打开 oracle 的审计开关。例如可以打开对查询语句的审计:
audit select table by session;
然后执行:
select sql_text,CLIENT_ID from dba_audit_trail where username='connectionUser'
order by EXTENDED_TIMESTAMP desc
可以列出每个用户执行的 sql 语句。
数据源在 WebSphere 应用服务器上的情形
如果是采用 WebSphere 应用服务器上配置的数据源,则无法将数据源上获得的连接转化为 OracleConnection 或 DB2Connection,须采用 WAS 提供的 connection wrapper 类 com.ibm.websphere.rsadapter.WSConnection。编程模型如下:
清单 4. 使用 WSConnection 传递用户标识
import com.ibm.websphere.rsadapter.WSConnection;
…
InitialContext ctx = new InitialContext();
DataSource ds = (javax.sql.DataSource) ctx.lookup("jbdc/mydatasource") ;
conn = ds.getConnection();
WSConnection wsconn = (WSConnection) conn ;
Properties props = new Properties();
props.setProperty(WSConnection.CLIENT_ID, clientId);
wsconn.setClientInformation(props);
//do something on the wsconn
wsconn.setClientInformation(null); // 清除连接上的用户信息
WSConnection 支持下列属性的传递:
WSConnection.CLIENT_ACCOUNTING_INFO
WSConnection.CLIENT_LOCATION
更多精彩
赞助商链接