问题在oracle数据源中填充v $ session属性

时间:2015-11-06 17:07:26

标签: java spring jpa oracle11g tomcat6

我在oracle数据源中填充v $ session属性时出现问题,即启动tomcat服务器后我的应用程序将使用连接,现在如果我使用以下查询查询数据库,我应该从DB获取一行,目前我没有得到任何行第一种方法,但第二种方法

 select schemaname, osuser, machine, program
 from v$session
 where program = 'Test';

下面是我正在使用的配置和工具,任何有助于重新审核的帮助都是适用的。

由于

1.Tomcate 6.0.35.3 
2.Oracle version :Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
3.Spring and JPA

方法1: -

server.xml:

                            <Resource 
                                            name="jdbc/oraclepool"
                                            auth="Container"
                                            factory="oracle.ucp.jdbc.PoolDataSourceImpl" 
                                            type="oracle.ucp.jdbc.PoolDataSource"
                                            description="main DB"
                                            connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource"
                                            connectionPoolName="UCPPool"
                                            url="${db.url}"
                                            user="${db.username}"
                                            password="${db.password.encrypted}"
                                            initialPoolSize="3"
                                            minPoolSize="1" 
                                            maxPoolSize="5"
                                            maxIdleTime="${db.maxIdleTime}"
                                            inactiveConnectionTimeout="${db.inactiveConnectionTimeout}" 
                                            abandonedConnectionTimeout="${db.abandonedConnectionTimeout}"
                                            timeToLiveConnectionTimeout="${db.timeToLiveConnectionTimeout}"
                                            maxStatements="${db.maxOpenPreparedStatements}"
                                            timeoutCheckInterval="${db.timeoutCheckInterval}"
                                            connectionWaitTimeout="${db.connectionWaitTimeout}"
                                            sqlForValidateConnection="${db.validationQuery}" 
                                            connectionProperties="v$session.program=Test;"
                                            />

方法2: -

在java类中添加了下面的代码片段,它起作用了。

当我用下面的查询查询数据库时,我得到了这行。

  select schemaname, osuser, machine, program
  from v$session
  where program = 'Test';

    Connection conn=null;
 // set connection properties
    Properties info = new java.util.Properties();
    info.put("v$session.program", "Test");
    // connect to database
    Context context = new InitialContext();
    PoolDataSourceImpl ds = (PoolDataSourceImpl)context.lookup("java:comp/env/jdbc/oraclepool");
    ((PoolDataSourceImpl)ds).setConnectionProperties(info); 
    conn = ds.getConnection(); 

任何人都能说出第一种方法的问题

再次感谢。

0 个答案:

没有答案