>> 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.
Yeah, I see what you mean. We use a homebuilt property system for that which returns configuration based on environment. It’s not JNDI but works :) > Unless you use Bootique, or your own property-based config mechanism. Is bootique worth checking out? I’m just noticing it now for the first time and so happens I’m looking into a new basis for our web services/APIs (current favorite being spark framework). > "Make jar, not war" :) Ha ha ha :) - hugi > >> On Mar 7, 2016, at 1:13 PM, Michael Gentry <mgen...@masslight.net> wrote: >> >> 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 <h...@karlmenn.is> 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 <and...@objectstyle.org> >>> 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 <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 >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>> >>> >>> >