Not quite done :). I have a project that uses multiple Cayenne models connected to multiple databases. The connection information is currently stored in the models and I’m constructing the ServerRuntime like this:
ServerRuntimeBuilder b = new ServerRuntimeBuilder( "Netbokhald" ); b.addConfig( "cayenne-core/cayenne-project.xml" ); b.addConfig( "cayenne-reporting/cayenne-project.xml" ); How would I go about programmatically configuring separate DataSources for each model? Cheers, - hugi > On 7. mar. 2016, at 21:03, 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 >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>>> >>> >> >
