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:[EMAIL PROTECTED]
>Sent: Friday, September 10, 2004 11:15 PM
>To: [EMAIL PROTECTED]
>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: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]




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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to