Hey!
Dave, to answer your question:
3. Find a JDBC driver, that implements connection pooling (is anyone using
this?)
Yes, IBM WebSphere Advanced 3.02 comes with connection pool, and along with
IBM's DB2 JDBC 2.0 driver, connection pooling is only slightly more
complicated implementation than the old way.
Sans adieu,
Danny Rubis
Dave Ford wrote:
> I have just spent the last day researching the topic of Database Connection
> Management and connection pooling, and now realize, that there are too many
> choices. I would like to summarize what I have learned and perhaps someone
> can correct me where I'm wrong or add a comment.
>
> Here are your choices:
>
> 1. Non-pooled:
>
> a. One connection per request: In the service method you open a connection,
> do your work, then close the connection.
>
> b. One connection per servlet: Store the connection as an instance variable
> of the servlet. Open it in the init method. Close it in the destroy method.
>
> c. One connection per session: Open the connection when you create the
> session. Close the connection in the session time out event:
> HttpSessionBindingListener.valueUnbound(..)
>
> d. One connection per web application: Store the connection in the
> ServletContext.
>
> e. One connection per web application: Store the connection as a public
> global static variable.
>
> 2. Pooled:
>
> a. One pool per servlet (Pool as static variable of servlet)
> b. One pool per application (Store pool in ServletContext)
> c. One pool per application (Store pool as singleton)
> d. One pool per application (Store pool in jndi server)
>
> It seems to me that 2d, is what Sun is recommending.
>
> Once you have decided to go with a connection pool, you have some more
> decisions to make.
>
> 1. Write the connection pool yourself (Fun for me, but not practical for
> most of my clients)
> 2. Use a third party, stand-alone connection pool like DbConnectionBroker
> 3. Find a JDBC driver, that implements connection pooling (is anyone using
> this?)
> 4. Use an app server that provides connection pooling (like Web Logic or
> Orion)
>
> The next consideration is the API for working with the pool. You choices
> are:
>
> 1. Use a Proprietary API:
>
> For example, DbConnectionBroker uses:
>
> conn = myBroker.getConnection();
> // do work with connection
> myBroker.freeConnection(conn);
>
> 2. Use a standard API. Sun, has defined the "JDBC 2.0 Optional Package
> Specification". This specification basically states that the API for using a
> pooled connection is indistinguishable from using a normal connection (at
> least to application developers). In other words, the standard API is
> essentially, "NO API". For example, here is how one might retrieve a
> "non-pooled" database connection:
>
> Context ctx = new InitialContext();
> DataSource ds = (DataSource)ctx.lookup("jdbc/nonPooled/MyDb");
> conn = ds.getConnection();
> // do work
> conn.close();
>
> And here is how one would retrieve a "pooled" database connection:
>
> Context ctx = new InitialContext();
> DataSource ds = (DataSource)ctx.lookup("jdbc/pooled/MyDb");
> conn = ds.getConnection();
> // do work
> conn.close();
>
> The only code difference is in the jndi lookup string. In the first example
> getConnection() means: "Open a new connection to the database server". But
> in the second example, getConnection() means, pull a connection from the
> pool. Likewise, the meaning of conn.close() is also different.
>
> So here is what I am using:
>
> For some clients, I am using Orion App server, a fully J2EE compliant
> Servlet and EJB server. Orion provides connection pooling, via a JNDI lookup
> as shown above. So for these apps, I am using the Sun standard API for
> pooling:
>
> Context ctx = new InitialContext();
> DataSource ds = (DataSource)ctx.lookup("jdbc/pooled/MyDb");
> conn = ds.getConnection();
> // do work
> conn.close();
>
> I think this gives me one pool, per web application, but I'm not sure.
> Anyone else know? Is this Sun defined or vendor specific?
>
> For some clients, I am using Apache tomcat (with mySql). For these apps, I'm
> currently using DbConnectionBroker, stored in the ServletContext. This gives
> me one pool per web application. What I would like to do, is use the
> standard Java API's for these tomcat apps, but I can't find any stand-alone
> connection pools that support the standard, java-defined API for connection
> pooling. Anyone know of any?
>
> So there is my take on the whole connection pool thing. Please let me know
> if this sounds correct and where I'm wrong.
>
> Thanks,
>
> Dave Ford
>
> ___________________________________________________________________________
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html