A little backstory on the connection pooling mechanism I submitted to Struts 
a while back:

A couple of months ago, at the company I work for we ran into problems with 
the connection pooling implementation within the commercial product we were 
using.  Specifically, (a) the pool itself was buggy and (b) the pool 
implementation made it difficult for us to pool PreparedStatements and the 
parse rate of unpooled PreparedStatements within the database was becoming a 
bottleneck to application performance.  For this reason I put together a 
Connection/PreparedStatement pooling implementation that met our needs.

Completely independently, I noticed the Struts project on 
jakarta.apache.org, started to poke around a bit, and subscribed to 
struts-dev and struts-user.  I noticed that Struts had a basic connection 
pooling implementation.  I also noticed several requests on struts-dev and 
struts-user looking to expand the functionality on the Struts connection 
pool.  Many of the features (in fact all of the features) that were being 
asked for were/are features of the Connection/PreparedStatement pool I put 
together.  So, I repackaged my code as org.apache.struts.*, and submitted it 
to the list.

This is the way open source development is supposed to work, no?  I had an 
itch, I scratched it.  I noticed others had the same itch, so I offered it 
up.

Now, unbeknownst to me, the Turbine project over at java.apache.org also has 
a connection pooling library with similar functionality.  Maybe it's my 
fault for not knowing this.  Maybe it's the struts-dev folk’s fault (sorry 
guys) for failing to mention that there is a connection pooling library in 
Turbine over at java.apache.org.  Maybe it's Apache's fault for not 
providing a clear picture of what is available and where.  Maybe it doesn't 
matter anyway because I think my pool is better designed, easier to 
maintain, or more feature rich than the existing one, in which case I think 
it's up to the community to decide which implementation they'd like to use. 
(And before we go off on a a holy war here, I'm not saying that I do think 
that.  I'm specifically not saying that one impl is better or worse than the 
other. Not having looked at the Turbine stuff in detail, I'm in no position 
to state that.  I'm just saying that that is a valid position to take.  It 
could be wrong (in the eyes of the community) but it's not unreasonable.)

Jon's response to this, when brought up in a slightly different context, was 
a bit off-putting:

> > Meanwhile, I do think there would be a lot of interest in a Jakarta
> > connection pool. In fact, someone has offered to donate one to Struts.
> > > < http://marc.theaimsgroup.com/?l=struts-dev&m=97967619230491 >
>
>Totally friggen lame.
>
>*All* of that code (and more) is already implemented in Turbine and can be
>used outside of the core "Turbine" system very easily.

If all of that functionality is available in Turbine, that makes it 
*redundant*, not lame.  Moreover, having poked around a bit in the Turbine 
stuff (and granted, I didn't poke that hard or that long, so maybe I missed 
it), it seems to me that not "all of that code is already implemented in 
Turbine".  Specifically, (a) I don't see that Turbine is doing any pooling 
of PreparedStatements, which if you recall was the major itch I was trying 
to scratch, (b) Turbine's Connection pool seems to require specific 
references to TurbineDB--so that legacy code has to be retrofitted to work 
with Turbine's pool, (c) Turbine's pool doesn't seem to support a 
javax.sql.DataSource interface.  Could Turbine's pool be modify to support 
these things? Of course, but I wasn't aware of Turbine's pool when I first 
submitted mine.  Moreover, Jon's response doesn't make me feel like my 
contribution is very welcome there.

Frankly, there seems to be some underlying Turbine vs. Struts politics here 
that I don't want to get involved in.  If you'd like to debate the merits of 
one pooling implementation versus another, or to work to see the full suite 
of functionality implemented in a single pooling library, or perhaps to 
debate whether or not more than one pool implementation is warranted, then 
let's do so.  But I don't think a knee-jerk response like that does much 
more than alienate potential developers.

I was going to segue this into a discussion of how a more modular 
utility/services/library project or set of projects is warranted, but I see 
that Morgan and Ted have already kicked that off in earnest, so I'll follow 
up in that thread.

- Rod

-----Original Message-----
From: Steve Downey [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 07, 2001 4:23 PM
To: '[EMAIL PROTECTED]'
Subject: RE: What is Jakarta?


It may not be easier, but it's certainly more fun. And it often seems easier
to build to suit than to adapt something.


-----Original Message-----
From: Jon Stevens [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 07, 2001 3:24 PM
To: [EMAIL PROTECTED]
Subject: Re: What is Jakarta?


on 2/7/01 12:15 PM, "Morgan Delagrange" <[EMAIL PROTECTED]> wrote:

 > My mistake, although stating that you have a database
 > connection pool component does not imply that it is
 > applicable outside of Turbine.

You could ask a very simple question:

"Is Turbine's Connection Pooling code available for use outside of Turbine?"

Oh wait, I forgot, it is easier to write a connection pool from scratch than
it is to ask a simple question.

:-(

-jon

--
If you come from a Perl or PHP background, JSP is a way to take
your pain to new levels. --Anonymous
<http://jakarta.apache.org/velocity/> && <http://java.apache.org/turbine/>

_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to