Hi all, unfortunately this solution shouldn't be used.
The dConn connection mustn't be closed directly, but the original connection from datasource should be closed. ... Regards, Zdenek On 5/14/07, Zdeněk Vráblík <[EMAIL PROTECTED]> wrote:
Hi Martin, I have solution. There is resource JDBC configuration which works for Tomcat 5.5.23 <Resource name="jdbcRes" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" username="user" password="user" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@192.168.100.119:1521:orcl" accessToUnderlyingConnectionAllowed="true" maxActive="20" maxIdle="10" maxwait="-1"/> When is set accessToUnderlyingConnectionAllowed to true DataSource produce connection which implement DelegatingConnection interface. DataSource ds = (DataSource) ctxt.lookup(poolName); conn = ds.getConnection(); Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate(); dconn is OracleConnection. There musn't be library commons-dbcp*.jar in common/lib directory, because all classes are in jar naming-factory-dbcp.jar in package org.apache.tomcat.dbcp.dbcp. Thanks Rashmi and Martin for help. Regards, Zdenek On 5/14/07, Zdeněk Vráblík <[EMAIL PROTECTED]> wrote: > Hi Martin, > > thanks for help. > I have tried your suggestion and it works fine - I am able to get > OracleConnection. > (I had to change String c_sUserNameKey="username"; to String > c_sUserNameKey="user";) > > It works for common Connection, but I need OracleConnection interface. > jdbc configuration: > <Resource name="sisPool" > auth="Container" > type="javax.sql.DataSource" > factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" > username="USER_51319" > password="USER_51319" > driverClassName="oracle.jdbc.driver.OracleDriver" or > driverClassName="oracle.jdbc.driver.OracleDriver" > url="jdbc:oracle:thin:@192.168.100.119:1521:orcl" > maxActive="20" maxIdle="10" maxwait="-1"/> > > But the datasource is not found if I use this configuration: > <Resource name="sisPool" > auth="Container" > type="oracle.jdbc.pool.OracleDataSource" > factory="oracle.jdbc.pool.OracleDataSourceFactory" > username="ISMART_USER_51319" > password="ISMART_USER_51319" > driverClassName="oracle.jdbc.OracleDriver" > url="jdbc:oracle:thin:@192.168.100.119:1521:orcl" > maxActive="20" maxIdle="10" maxwait="-1"/> > > I have found in dbcp configuration other way to get inner connection: > Connection conn = ds.getConnection(); > Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate(); > > but when I get connection from Tomcat it doesn't implement > DelegatingConnection interface. > > initContext = new InitialContext(); > envContext = (Context)initContext.lookup("java:/comp/env"); > DataSource ds = (DataSource) ctxt.lookup(poolName); > conn = ds.getConnection(); > > I am not able to find any way how to get OracleConnection instead Connection. > > Do you have any idea? > > Thanks. > > Regards, > Zdenek > > On 5/13/07, Martin Gainty <[EMAIL PROTECTED]> wrote: > > make sure the driver is ok first e.g. > > import java.sql.*; > > > > Properties props = new Properties(); > > String c_sUserNameKey="username"; > > String c_sPasswordKey="password"; > > String c_sDBURL ="jdbc:oracle:thin:@"; > > String c_sDriverName ="oracle.jdbc.driver.OracleDriver"; > > > > //Instantiate driver > > Driver c_Driver=null; > > try > > { > > c_Driver = (Driver)Class.forName( c_sDriverName ).newInstance(); > > } > > catch(SQLException sqle) > > { > > System.out.println("Cannot instantiate driver ..is it right version..is it > > on classpath?"); > > return; > > } > > //make sure Oracle listenet is operational (netstat -a | grep 1521) > > //make SURE Oracle DB is up and listening (tnsping SID) returns successful > > //make sure you acquire the username/password to establish connection to > > oracle db > > //place username,password into properties > > props.put( c_sUserNameKey, c_sDBUser ); > > props.put( c_sPasswordKey, c_sDBPassword ); > > > > //Get a connection > > try > > { > > Connection = c_Driver.connect( c_sDBURL, props ); > > } > > catch ( SQLException sqlex ) > > { > > System.out.println( "Error connecting to database", sqlex ); > > return; > > } > > > > //should get you started.. > > M-- > > This email message and any files transmitted with it contain confidential > > information intended only for the person(s) to whom this email message is > > addressed. If you have received this email message in error, please notify > > the sender immediately by telephone or email and destroy the original > > message without making a copy. Thank you. > > > > ----- Original Message ----- > > From: "Rashmi Rubdi" <[EMAIL PROTECTED]> > > To: "Tomcat Users List" <users@tomcat.apache.org> > > Sent: Sunday, May 13, 2007 3:23 PM > > Subject: Re: Oracle JDBC connection Tomcat 5.5 > > > > > > > On 5/12/07, Zdeněk Vráblík <[EMAIL PROTECTED]> wrote: > > >> Hi Rashmi, > > >> > > >> thans for reply. > > >> > > >> Configuration that is described in link you sent me works fine. > > >> Problem is when I change > > >> the datasource factory to Oracle datasource factory. Than is not > > >> possible to find this datasource through JNDI lookup and this > > >> connection disappear from admin console. > > >> I think that ojdbc14.jar is newer version of oracle drivers and it > > > > > > You are right, sorry you don't need classes12.jar in this case please > > > ignore my previous post. > > > > > > I also happen to have oracle 10g, in order to answer your question, I > > > was trying to see if I could set up a connection pool and then try to > > > get OracleConnection instead of SQL Connection, I tried for almost 1/2 > > > a day so far, to get things set up but got an error > > > "java.sql.SQLException: No more data to read from socket" that is > > > taking too long to figure out, even after searching for answers on the > > > Internet. I have other things to do :-) so I will give up on this for > > > now. > > > > > > Anyway, there's some more instructions here : > > > http://www.oracle.com/technology/sample_code/tech/java/oc4j/htdocs/jdbc_in_j2ee/jdbc_in_j2ee.html > > > > > > the above instructions are written for Oracle9iAS Container and not > > > Tomcat, however they demonstrate how to obtain OracleConnection ---- > > > may be you'll find some useful information there unless someone on > > > this list has a solution. > > > > > > You may also want to check with Oracle's Technology Forums. > > > > > >> works fine with standard datasource factory > > >> org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory and > > >> javax.sql.DataSource. It stops work when I use oracle datasource > > >> factory > > >> factory="oracle.jdbc.pool.OracleDataSourceFactory" and datasource type > > >> type="oracle.jdbc.pool.OracleDataSource". > > >> > > >> What I need is any solution how get OracleConnection instead of > > >> Connection to use. > > >> Do I miss any parameter in resource configuration? > > >> <Resource name="sisPool" > > >> auth="Container" > > >> type="oracle.jdbc.pool.OracleDataSource" > > >> factory="oracle.jdbc.pool.OracleDataSourceFactory" > > >> username="USER_51319" > > >> password="USER_51319" > > >> driverClassName="oracle.jdbc.OracleDriver" > > >> url="jdbc:oracle:thin:@192.168.100.119:1521:orcl" > > >> maxActive="20" maxIdle="10" maxwait="-1"/> > > >> > > >> Thanks. > > >> Zdenek > > >> > > > > > > -Regards > > > Rashmi > > > > > > > > > --------------------------------------------------------------------- > > To start a new topic, e-mail: users@tomcat.apache.org > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > >