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]

Reply via email to