Hi,
You are right!
that statement should be there!
kind regards,
Luke
On Tue, 2004-09-14 at 06:08, Caroline Jen wrote:
> I saw your Tomcat connection pool class.
>
> Your class opens and gets a 'conn' object from the
> connection pool. Where in your code "returns" the
> 'conn' object for use? Should there be a statemenet
> like:
>
> return conn;
>
> somewhere?
>
> 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>
> --- "Luke (Terry) Vanderfluit" <[EMAIL PROTECTED]>
> wrote:
>
> > 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]
> >
> >
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
--
========================
Luke (Terry) Vanderfluit
Mobile: 0421 276 282
========================
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]