cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lon Varscsak <lon.varsc...@gmail.com>
Subject Re: Reconnecting automatically after DB downtime
Date Mon, 07 Mar 2016 22:18:28 GMT
OT: I’m planning to build jar not war…now I’m not sure how to deploy. :P

-Lon

On Mon, Mar 7, 2016 at 2:27 PM, Hugi Thordarson <hugi@karlmenn.is> wrote:

> >> 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 <mgentry@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 <hugi@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 <andrus@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 <hugi@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 <johnthuss@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 <
> mgentry@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 <hugi@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 <mgentry@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
<
> hugi@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
<
> >>> andrus@objectstyle.org>
> >>>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>> On Feb 29, 2016, at 2:20 PM, Hugi Thordarson
<
> hugi@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
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message