Tomcat JDBC 的 Oracle VPD session 问题

标签 oracle tomcat jdbc connection-pooling vpd

我的目标是能够使用 Tomcat JDBC 和 Oracle VPD 创建“隔离 session ”。我如何实现类似于 SessionEventAdapter 的概念在 Eclipse 链接中,但具有更多 Tomcat 连接池。我当前的客户端代码如下:

InitialContext initCtx = new InitialContext();
Context jndi = (Context) initCtx.lookup("java:comp/env");

DataSource ds = (DataSource) jndi.lookup("jdbc/" + _jdbcResource);
_connection = ds.getConnection();

_statement = _connection.prepareStatement(sqlStatement);

Context.xml中的资源定义

<Resource defaultAutoCommit="true" defaultReadOnly="false"
        driverClassName="oracle.jdbc.OracleDriver"
        factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
        fairQueue="false" initialSize="10"
        jdbcInterceptors="ConnectionState;" jmxEnabled="true"
        logAbandoned="true" maxActive="100" maxIdle="100"
        maxWait="30000" minEvictableIdleTimeMillis="5000"
        minIdle="10" name="jdbc/OracleApps" password="APPS"
        removeAbandoned="true" removeAbandonedTimeout="600"
        testOnBorrow="true" testOnReturn="true"            testWhileIdle="true" timeBetweenEvictionRunsMillis="5000"
        type="javax.sql.DataSource"            url="jdbc:oracle:thin:testmenot:1521:DEV"
        useEquals="false" username="APPS" validationInterval="30000" validationQuery="SELECT 2+2 FROM DUAL"/>

如果需要任何信息,请告诉我。

谢谢。

最佳答案

只有在使用 Tomcat DBCP 时通过展开连接来设置客户端上下文的方法

DataSource ds = (DataSource)ctx.lookup(jndi); 连接conn = ds.getConnection(); 如果 (conn.isWrapperFor(oracle.jdbc.OracleConnection.class)) { OracleConnection oraCon=conn.unwrap(oracle.jdbc.OracleConnection.class); --Only Context, Parameter name, Parameter Value oraCon.setApplicationContext("CLIENTCONTEXT", "ORACLE_USER_ID", userId);

注意:Oracle JDBC 瘦驱动程序仅支持一种上下文,即 CLIENTCONTEXT

关于Tomcat JDBC 的 Oracle VPD session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45940523/

相关文章:

java - 预压缩、GWT 和 Tomcat

Oracle 在用户使用相同密码时锁定用户

sql - 数百个别名/同义词与数据库表的完全限定名称

oracle - 获取不同模式中 Oracle 表的最后一次 DDL 时间

oracle - 'ORA-01031 : insufficient privileges' error received when inserting into a View

java - 如何在Eclipse中安装tomcat插件

java - 登录/注销后防止 Spring Security 302 重定向

java - 为什么我的 JDBC 更新不起作用?

java - JDBC数据源由服务器管理?

sql - 来自 PostgreSQL 函数的多个 JDBC 结果集