Not sure if this helps, but I have used both the default (Cayenne) connection
pool, and DBCP.
http://commons.apache.org/dbcp/
Cayenne's implementation seems to be adequate, but if you determine that you
are going to need something a bit more sophisticated, then DBCP is very
reliable IMHO. I have been using DBCP for over a year and have had no issues
yet (however, I also upgraded from MySQL 5.0 because of connection bugs
reported in parts of that version branch).
Joe
On May 2, 2012, at 10:18 AM, John Huss wrote:
> The number of ObjectContexts (or DataContexts) has no relation to the
> number of database connections. ObjectContexts are cheap to create and
> use, so go wild. Cayenne will do connection pooling out of the box by
> using the minimum and maximum connection limits that you define in Modeler.
>
> John
>
> On Wed, May 2, 2012 at 8:05 AM, Andrew Willerding
> <[email protected]>wrote:
>
>> On 05/02/2012 05:11 AM, Durchholz, Joachim wrote:
>>
>>> I'd probably look up the Cayenne docs on connection pooling, and just
>>> make sure that everything is configured explicitly that the web container
>>> would do for you implicitly. BTW I've been working on a J2SE application
>>> for the last three years, and it's probably really a good idea to design
>>> the application around "requests" or "transactions". Transactions can fail
>>> due to transient errors, so you want them restartable, which means you need
>>> to wrap them in objects, and there you have your requests. (This pattern
>>> also sucks greatly because it isn't easy to pass results back to the
>>> caller. Essentially, you're doing the exactly same web service
>>> architecture, except it's running inside a single JVM.)
>>>
>> I got the impression that there was some sort of connection pooling
>> built-in to Cayenne because in the Modeller there is a setting for minimum
>> and maximum connections. Now I'm getting confused and perhaps I'm using
>> incorrect terminology.
>>
>> In my mind there is the actual connection to the database as defined
>> during the creation of the DataContext. In the application code I am
>> creating an ObjectContext based on the DataContext with a call to
>> DataContext.**createChildContext(). It is this ObjectContext where I can
>> create/delete manipulate the contents of the database.
>>
>> But in a multi-threaded application do I need to create several
>> ObjectContexts or can one ObjectContext be shared among all the threads?
>> If the ObjectContext is sharable then do I need to synchronize access to
>> it? If it needs to by synchronized then the "200th" thread will be in a
>> long line-up which is why I would see the need to create several pooled
>> ObjectContexts. But then this takes be back to connection pooling as
>> defined in the Modeller. If everything goes back through a single
>> connection then it's pointless to create and manage ObjectContexts as the
>> bottleneck may be "deeper" in the Cayenne library.
>>
>> Help! I getting trapped in my own recursive thoughts.
>>
>> ;-)
>>