Try dbcp and pool rc1. -----Original Message----- From: Jonathan Reynolds [mailto:[EMAIL PROTECTED] Sent: October 17, 2003 11:23 AM To: [EMAIL PROTECTED] Cc: Jonathan M Reynolds Subject: Abandoned Connections Not Working - Tomcat 4.1.24 - Oracle 8i
I am using Tomcat 4.1.24 on a Windows 2000 machine. I have successfully set up DBCP to provide a connection to my Oracle 8i database. I am now trying to test the removal of abandoned connections and it's not working according to the Data Source HOW TO guide. Can someone please help? Here are my important files: server.xml ----------------- <Context className="org.apache.catalina.core.StandardContext" crossContext="false" reloadable="true" mapperClass="org.apache.catalina.core.StandardContextMapper" useNaming="true" debug="0" swallowOutput="false" privileged="false" displayName="Servlet Web App" wrapperClass="org.apache.catalina.core.StandardWrapper" docBase="D:\Program Files\Apache Group\Tomcat 4.1\webapps\servlets" cookies="true" path="/servlets" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper"> <Resource name="jdbc/SMSOraclePool" scope="Shareable" type="javax.sql.DataSource" auth="Container" description="SMS Oracle Pool"/> <ResourceParams name="jdbc/SMSOraclePool"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:@localhost:1521:pearson</value> </parameter> <parameter> <name>password</name> <value>xxx</value> </parameter> <parameter> <name>maxActive</name> <value>2</value> </parameter> <parameter> <name>maxWait</name> <value>-1</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>username</name> <value>xxx</value> </parameter> <parameter> <name>maxIdle</name> <value>1</value> </parameter> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <parameter> <name>removeAbandonedTimeout</name> <value>5</value> </parameter> <parameter> <name>logAbandoned</name> <value>true</value> </parameter> </ResourceParams> </Context> web.xml --------------- <resource-ref> <description>SMS Oracle Connection</description> <res-ref-name>jdbc/SMSOraclePool</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> Code Example --------------------- import javax.servlet.http.HttpServlet; import javax.servlet.ServletException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.sql.Connection; import javax.sql.DataSource; import java.sql.*; import javax.naming.InitialContext; import javax.naming.Context; public class PoolTest extends HttpServlet { /** *See doGet() **/ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doGet(req,res); } /** * Determine which version response is desired, and forward to appropriate Authentication * servlet. If no version is sent, assume that an Authentication 1.0 response is desired. **/ public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try { /* Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/SMSOraclePool"); */ //Obtain our environment naming context Context initCtx = new InitialContext(); DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/SMSOraclePool"); Connection conn1 = ds.getConnection(); System.out.println("Pool Test Servlets: Connection 1 received"); Connection conn2 = ds.getConnection(); System.out.println("Pool Test Servlets: Connection 2 received"); Connection conn3 = ds.getConnection(); System.out.println("Pool Test Servlets: Connection 3 received"); } catch(Exception ex) { ex.printStackTrace(System.out); } } } When I run the code above, I see the following printouts: Pool Test Servlets: Connection 1 received Pool Test Servlets: Connection 2 received I don't see the third printout, which is what I excpect. However, after 5 seconds, the connections are not returned to the pool and see NO stackTrace to the logs or to the console. Any help would be most appreciated. Thanks. Jonathan