You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Shapira, Yoav" <Yo...@mpi.com> on 2004/09/13 15:01:48 UTC

RE: [OFF-TOPIC]Yoav --> RE: Some pretty basic TomcatConnectionPooling Questions????

Hi,
That's a pretty good solution, yeah.  The "include" you refer to can be
done in several nice OO ways, such as a common parent class or a
singleton utility.

Yoav Shapira
Millennium Research Informatics


>-----Original Message-----
>From: Luke (Terry) Vanderfluit [mailto:luke@chipcity.com.au]
>Sent: Friday, September 10, 2004 11:15 PM
>To: tomcat-user@jakarta.apache.org
>Subject: RE: [OFF-TOPIC]Yoav --> RE: Some pretty basic
>TomcatConnectionPooling Questions????
>
>Hi Yoav and all,
>
>Thanks for your reply,
>
>> But you went a bit too far: the DataSource lookup is potentially
>> expensive.  That you can do in the init() method and keep a reference
to
>> the DataSource, because keeping that reference doesn't use a
connection
>> resource.
>> Then in your servlet methods, get a connection from the DataSource,
use
>> it, and release it.
>> In your servlet destroy method, null out your DataSource reference.
>> So the DataSource lookup is done once, the DataSource reference is
kept
>> as a private non-static member variable of the servlet class, and the
>> Connenctions are used only within methods, they're not class member
>> variables.
>
>So now I have changed my code to:
>1. Declaration of private global variables:
><code>
>   private Context ctx = null;
>   private DataSource ds = null;
>   private Connection conn;
></code>
>
>2. an init() method:
><code>
>// "init" does DataSource lookup
>   public void init(ServletConfig config) throws ServletException {
>      super.init(config);
>      try {
>         ctx = new InitialContext();
>         if(ctx == null) {
>            throw new Exception("No Context");
>         }
>         ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mb");
>      } // end try block
>      catch(Exception e) {
>         e.printStackTrace();
>      }
>   } // end init()
></code>
>
>3. an openConnection() method:
><code>
>   private void openConnection() {
>      try {
>         if(ds != null) {
>            conn = ds.getConnection();
>            if(conn != null) {
>               message = "Got Connection to DB " + conn.toString();
>               }
>            }
>         } // end try block
>      catch(Exception e) {
>         e.printStackTrace();
>         }
>      } //end method openConnection()
></code>
>
>4. a destroy() method that nulls the DataSource:
><code>
>   public void destroy() {
>   ds = null;
>   }
></code>
>
><remarks>
>-the conn.close() is called in the methods that call openConnection().
>-I'm thinking of doing an 'include' for the openConnection method, so I
>don't have the code for the same method sitting in multiple classes.
>Would that be a good idea? (maintainability, yes but in terms of
>overhead?)
></remarks>
>
>Would this be the 'leanest' scenario for a database connection?
>thanks again,
>Luke
>
>--
>========================
>Luke (Terry) Vanderfluit
>Mobile: 0421 276 282
>========================
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org




This e-mail, including any attachments, is a confidential business communication, and may contain information that is confidential, proprietary and/or privileged.  This e-mail is intended only for the individual(s) to whom it is addressed, and may not be saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) intended recipient, please immediately delete this e-mail from your computer system and notify the sender.  Thank you.


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org