Yep. Cayenne built-in pool is intentionally basic with a minimal number of features (Here we may be dealing with a bug though, and I'd like to fix it, but that's a separate issue). So yeah, using a third party DS may be a good idea. Here is an example how you can set it up:
DataSource ds = // instantiate it via API specific to you DS provider ServerRuntime runtime = ServerRuntimeBuilder.builder().dataSource(ds).build(); // of course add any other things you need to add to the builder to get a working Cayenne stack. Andrus > On Mar 7, 2016, at 12:45 PM, Hugi Thordarson <h...@karlmenn.is> wrote: > > Thanks John! I’m going to try my hand at HikariCP. > > Are there any examples anywhere on how to configure Cayenne to use a third > party connection pool? > > Cheers, > - hugi > > > > >> On 7. mar. 2016, at 20:39, John Huss <johnth...@gmail.com> wrote: >> >> EOF can do JNDI, but that's not going to do anything to fix your problem. >> >> The connection pool in cayenne had some changes somewhat recently so it's >> entirely possible there are bugs. >> >> In practice it turns out many people don't use the connection pool built-in >> to Cayenne at all, and rather use a third-party connection pool, of which >> there are several. The cayenne one is decent, but it is very limited in >> functionality and less robust due to having a smaller user base and being a >> non-core feature. >> >> You can use another pool like: >> hikari <https://github.com/brettwooldridge/HikariCP> - If I was starting a >> new project I'd use this >> tomcat-jdbc <https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html> - >> This is what I currently use >> commonds-dbcp <https://commons.apache.org/proper/commons-dbcp/> >> c3po <http://www.mchange.com/projects/c3p0/> >> >> The main reason I turned to a third-party connection pool was to get >> fair-scheduling which will provide connections to whoever has been waiting >> the longest, which helps avoid unnecessary errors caused by serving >> requests out of order. >> >> John >> >> On Mon, Mar 7, 2016 at 2:31 PM Michael Gentry <mgen...@masslight.net> wrote: >> >>> Well, I'm not sure what you are using to run your web application, but >>> Tomcat, Jetty, JBoss, etc all have mechanisms to provide JNDI lookups of DB >>> connection pools. You just tell Cayenne Modeler to use JNDI lookup and >>> give it the JNDI name, then configure the container to provide the DB >>> connection. >>> >>> Is your WO application using EOF or Cayenne? Been a while since I used WO, >>> but I'd be stunned if EOF cannot use a JNDI lookup as well. >>> >>> mrg >>> >>> >>> On Mon, Mar 7, 2016 at 3:07 PM, Hugi Thordarson <h...@karlmenn.is> wrote: >>> >>>> Hi Michael, >>>> does using JNDI change anything about the connection itself, isn’t it >>> just >>>> a different method of looking up connection information? >>>> >>>> But I probably can’t use it anyway since one of the apps is a WebObjects >>>> app and doesn’t provide a JNDI service (at least I’ve never used it). >>>> >>>> Thanks, >>>> - hugi >>>> >>>> >>>>> On 7. mar. 2016, at 19:13, Michael Gentry <mgen...@masslight.net> >>> wrote: >>>>> >>>>> Hi Hugi, >>>>> >>>>> Since this appears to be a web-based application, can you switch to >>> using >>>>> JNDI? >>>>> >>>>> mrg >>>>> >>>>> >>>>> On Mon, Mar 7, 2016 at 5:46 AM, Hugi Thordarson <h...@karlmenn.is> >>>> wrote: >>>>> >>>>>> Hi all, >>>>>> This is still happening, even after I added a validationQuery, our app >>>> is >>>>>> dying quite frequently :(. I’m not quite sure how to debug this, is >>>> there >>>>>> any way for me to catch where connections are being opened in the code >>>> and >>>>>> at what location they’re hanging? >>>>>> >>>>>> >>>>>> >>>> >>> https://www.dropbox.com/s/8jkmh6513s6wwkn/Screenshot%202016-03-07%2010.21.53.png?dl=0 >>>>>> >>>>>> Cheer, >>>>>> - hugi >>>>>> >>>>>> // Hugi Thordarson >>>>>> // http://www.loftfar.is/ >>>>>> // s. 895-6688 >>>>>> >>>>>> >>>>>> >>>>>>> On 29. feb. 2016, at 11:25, Andrus Adamchik <and...@objectstyle.org> >>>>>> wrote: >>>>>>> >>>>>>> >>>>>>>> On Feb 29, 2016, at 2:20 PM, Hugi Thordarson <h...@karlmenn.is> >>>> wrote: >>>>>>>> >>>>>>>> What does validationQuery do? >>>>>>> >>>>>>> Periodically executes for each pooled connection, and kills >>> connections >>>>>> that throw during validation. So it ensures that all pooled >>> connections >>>> are >>>>>> in a good state. >>>>>>> >>>>>>> Andrus >>>>>>> >>>>>> >>>>>> >>>> >>>> >>> >