We're configuring a datasource like so in server.xml:

<Resource name="jdbc/UCPPool"
              auth="Container"
              factory="oracle.ucp.jdbc.PoolDataSourceImpl"
              type="oracle.ucp.jdbc.PoolDataSource"
              description="UCP Pool in Tomcat"
              connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource"
              minPoolSize="2"
              maxPoolSize="20"
              inactiveConnectionTimeout="20"
              user="scott"
              password="tiger"
              url="jdbc:oracle:thin:@db-host.dev:50071:mydb"
              connectionPoolName="UCPPool"
              validateConnectionOnBorrow="true"
              sqlForValidateConnection="select 1 from DUAL"
              
connectionProperties=";oracle.net.ns.SQLnetDef.TCP_CONNTIMEOUT_STR=3000;" />


Notice that the connectionProperties attribute has leading and trailing 
semicolons.  We've noticed that if they are not present, then the 
leading/trailing characters are stripped out of the value string.  Moreover, 
additional properties are just ignored.

Code we're using to see the behavior:

    DataSource ds = null;
    Connection conn = null;
    ResultSet result = null;
    Statement stmt = null;
    ResultSetMetaData rsmd = null;
    try{
      Context context = new InitialContext();
      Context envCtx = (Context) context.lookup("java:comp/env");
      ds =  (DataSource)envCtx.lookup("jdbc/UCPPool");
      if (ds != null) {
        PoolDataSourceImpl pds = (PoolDataSourceImpl)ds;
        System.out.println("Print all conn props:" + 
pds.getConnectionProperties().toString());
        System.out.println("Print value of just 
oracle.net.ns.SQLnetDef.TCP_CONNTIMEOUT_STR: " 
+pds.getConnectionProperty("oracle.net.ns.SQLnetDef.TCP_CONNTIMEOUT_STR"));
        conn = ds.getConnection();
        stmt = conn.createStatement();
        result = stmt.executeQuery("SELECT * FROM DEPT");
       }
     }

...
Print all conn props:{oracle.net.ns.SQLnetDef.TCP_CONNTIMEOUT_STR=3000}
Print value of just oracle.net.ns.SQLnetDef.TCP_CONNTIMEOUT_STR: 3000


This may be an error in the oracle factory (oracle.ucp.jdbc.PoolDataSourceImpl) 
or in the parsing logic in Tomcat when reading the XML file.  I haven't been 
able to locate that code for a quick review, nor have we had time to try 
passing that property to other drivers and see if it works (thus narrowing 
suspicion on the oracle factory class).

Can someone point me to the area of code in tomcat that initially parses the 
resource (in GlobalResources) and then instantiates the resources (I assume the 
actual instantiation is via org.apache.naming.factory.ResourceFactory, but 
don't know the code path leading towards that invocation).

We're seeing this on Tomcat 7.0.11 and (I think) on 7.0.14.

(Fedora 11, 64-bit, Sun JDK 1.6.0.24 64-bit).

Thanks!

Jason Pringle

This message and the information contained herein is proprietary and 
confidential and subject to the Amdocs policy statement,
you may review at http://www.amdocs.com/email_disclaimer.asp


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to