Hi Hugi, It looks to me like this makes it much harder to deploy your application in development/test/etc type environments since your URL/etc are in the code. The advantage of JNDI is you only reference a logical name that is configured external to the WAR, making it much easier to have one build that can be deployed in different environments. I took a brief glance at Hikari and don't think it includes JNDI natively.
mrg On Mon, Mar 7, 2016 at 4:03 PM, Hugi Thordarson <[email protected]> wrote: > Well, that was easy! Up and running in production. > > HikariConfig config = new HikariConfig(); > config.setJdbcUrl( > "jdbc:mysql://server:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&connectTimeout=0" > ); > config.setUsername( “myUsername" ); > config.setPassword( “myPassword" ); > > HikariDataSource dataSource = new HikariDataSource( config ); > serverRuntimeBuilder = serverRuntimeBuilder.dataSource( dataSource ); > > Thanks, > - hugi > > > > On 7. mar. 2016, at 20:51, Andrus Adamchik <[email protected]> > wrote: > > > > 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> > 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 <[email protected]> > 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 <[email protected]> > >>>> 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 <[email protected]> > >>>>> 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 < > [email protected]> > >>>>>>> wrote: > >>>>>>>> > >>>>>>>> > >>>>>>>>> On Feb 29, 2016, at 2:20 PM, Hugi Thordarson <[email protected]> > >>>>> 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 > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>> > >>>>> > >>>> > >> > > > >
