Java EE 应用中对前端用户的数据库操作的审计
2010-09-26 00:00:00 来源:WEB开发网在主机(z/OS)上,通过 DB2 命令: -DISPLAY THREAD(*) DETAIL 来查看,输出结果示例:
DSNV401I -DB8G DISPLAY THREAD REPORT FOLLOWS - DSNV402I -DB8G ACTIVE THREADS
-NAME ST A REQ ID AUTHID PLAN ASID TOKEN SERVER RA * 4 V2.27.1302 DB2USER DISTSERV
0042 17 V437-WORKSTATION=clientWorkstation, USERID=DB2UserID,
APPLICATION NAME=yourApplication
针对 Oracle 的标识传递
在 Oracle 11g Release 1 之前的版本中,Oracle JDBC driver 提供了接口 oracle.jdbc.driver.OracleConnection,通过 OracleConnection 上的两个方法 setClientIdentifier() 和 clearClientIdentifier() 可以完成标识传递。OracleConnection 只能传递一个属性 clientIdentifier,但通常这已经足够。
示例如下:
清单 3. 使用 OracleConnection 传递用户标识
OracleDataSource dataSource = new OracleDataSource();
dataSource.setURL("jdbc:oracle:thin:@hostname:1521:orcl");
dataSource.setUser("username");
dataSource.setPassword("passwd");
conn = (OracleConnection) dataSource.getConnection();
conn.setClientIdentifier(clientId) ;
// do something on the connection
conn.clearClientIdentifier(clientId) ;
conn.close() ;
dataSource.close() ;
这个 client_id 传到 oracle 后,可以通过下面 sql 语句来查看每个 session 上的用户标识。
select client_identifier from v$session
更多精彩
赞助商链接