----------------------------------------------------------------
BEFORE YOU POST, search the faq at <http://java.apache.org/faq/>
WHEN YOU POST, include all relevant version numbers, log files,
and configuration files.  Don't make us guess your problem!!!
----------------------------------------------------------------

Gustavo,

I was on JDK 1.2.2. I installed JDK 1.3 and the problems had gone.
There seems to be a problem with Sun's JDBCODBC. If 1.3 is no
option you could try a different driver

check out http://www.inetsoftware.de (this is from Brett Knights)
He says: I've been using their drivers for over a year with great results.



> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]Im Auftrag von Gustavo
> Arruda
> Gesendet: Dienstag, 17. Oktober 2000 00:27
> An: Java Apache Users
> Betreff: Memory consumption due to erroneous access to database
>
>
> ----------------------------------------------------------------
> BEFORE YOU POST, search the faq at <http://java.apache.org/faq/>
> WHEN YOU POST, include all relevant version numbers, log files,
> and configuration files.  Don't make us guess your problem!!!
> ----------------------------------------------------------------
>
> Hi folks,
>
> I am using Windows NT 4.0 plus JDK1.2.1 plus Apache 1.3.12 plus JSERV1.0.
>
> I have written a class to read the DataBase through a JDBC/ODBC
> bridge, but
> I am afraid it is not throwing objects to garbage or closing connections.
> Everytime I call any Servlet that uses this class, it works fine but the
> amount of memory used by "java.exe" process increases by 200k or more. So,
> after some repeated calls to any Servlet, java.exe is so big that it stops
> working and I cant run Servlets anymore. The error in the log file says
> "Jdbc:Odbc : can´t read anymore tables".
>
> I am sending  you the code of the class 1 that access the DB , the code of
> class 2 that extends the HttpServlet class, and the code of class 3 that
> extends class2. The problem is I dont know how to close the connection to
> the database after the ResultSet is passed to the CLASS3 (see
> codes, I hope
> you do!)
>
> Thanks in advance,
>
> Gustavo Arruda
>
> //CLASS 1 - DBSynchronizer - Access the DB through methods select
> and update
> import java.io.*;
> import java.sql.*;
> public class DBSynchronizer {
>
>   private static final String url="jdbc:odbc:carona";
>   private static boolean isReading = false;
>   private static boolean isWriting = false;
>   private static Connection readCon;
>   private static Connection writeCon;
>   private static Statement select = null;
>   private static Statement update = null;
>   private static ResultSet result = null;
>   public DBSynchronizer() {
>      try {
>         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
>         readCon = DriverManager.getConnection(url,"","");
>         writeCon = DriverManager.getConnection(url,"","");
>      } catch (Exception e) {}
>   }
>
>   public synchronized ResultSet select(String query) {
>      while (isWriting) try {
>         wait();
>      } catch (InterruptedException e) { }
>      isReading = true;
>      try {
>         select = readCon.createStatement();
>         result = select.executeQuery(query}
>     catch(Exception e) {
>         e.printStackTrace();
>     }
>      isReading = false;
>      notifyAll();
>      return result;
>   }
>
>   public synchronized int update(String updt) {
>     int inserted=0;
>     while (isReading) try {
>        wait();
>     } catch (InterruptedException e) { }
>     isWriting = true;
>     try {
>        update = writeCon.createStatement();
>        inserted=update.executeUpdate(updt);
>      } catch(Exception e) {
>        inserted=-1;
>      }
>      isWriting = false;
>      notifyAll();
>      return inserted;
>   }
> }
>
> //CLASS2 - HttpServletSQL makes the CLASS1 methods available through an
> object called sql
> import java.io.*;
> import java.sql.*;
> import java.util.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
>
> public class HttpServletSQL extends HttpServlet {
>
>    protected static DBSynchronizer sql;
>
>    public void init (ServletConfig config) throws ServletException  {
>       super.init(config);
>       // Created only by the first Servlet
>       if(sql == null)
>
>          sql = new DBSynchronizer();
>       }
>    }
> }
> //CLASS3 - A normal servlet that extends class2
> import java.io.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> import java.sql.*;
> import java.util.*;
>
> public class Servlet_counter extends HttpServletSQL {
>  public void doGet (HttpServletRequest req, HttpServletResponse res)
>    throws ServletException, IOException
>   {
>       res.setContentType("text/html");
>       ServletOutputStream out = res.getOutputStream();
>
>      String fontSize = req.getParameter("fontSize");
>      String fontColor = req.getParameter("fontColor");
>      if (fontSize == null) fontSize = "2" ;
>      if (fontColor == null) fontColor = "white" ;
>      String getCod = "Select Max(Cod) AS MCOD FROM ACCESS" ;
>
>      ResultSet rs= sql.select(getCod);
>      int cod = 0;
>      try {
>        if (rs.next()) {
>          cod = rs.getInt(1);
>          out.print("<font size=+"+fontSize+" color="+fontColor+"> "+
>                     (cod+1)+"</font>");
>        }
>       rs.close();
>      }
>      catch(Exception e) { }
> }
> }
>
>
>
> --
> --------------------------------------------------------------
> Please read the FAQ! <http://java.apache.org/faq/>
> To subscribe:        [EMAIL PROTECTED]
> To unsubscribe:      [EMAIL PROTECTED]
> Search Archives:
> <http://www.mail-archive.com/java-apache-users%40list.working-dogs.com/>
> Problems?:           [EMAIL PROTECTED]
>



--
--------------------------------------------------------------
Please read the FAQ! <http://java.apache.org/faq/>
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Search Archives:
<http://www.mail-archive.com/java-apache-users%40list.working-dogs.com/>
Problems?:           [EMAIL PROTECTED]

Reply via email to