That's basically what I'm doing...

     DataSource dataSource = serverRuntime().getDataSource(dataNodeName);



    try {

    return dataSource.getConnection();

    } catch (SQLException sqe) {

    throw new RuntimeException(sqe);

    }

No exception is being throw.  My query executes (a simple select) and
returns results.  I then immediately do a "normal" Cayenne fetch, but it
times out with the error I mentioned.  My code doesn't explicitly close the
connection, because historically I wouldn't want to disconnect from the
database.

-Lon

On Tue, Oct 14, 2014 at 4:46 PM, Andrus Adamchik <and...@objectstyle.org>
wrote:

> Hi Lon,
>
> Some code samples showing how you get and release connection would help to
> understand your problem better. But... You can actually bypass dealing with
> the internals of Cayenne stack and work with DataSource as you would in a
> straight JDBC application:
>
> ServerRuntime r = ...
> DataSource ds = r.getDataSource("mydatanode");
>
> try(Connection c = ds.getConnection()) {
>    // do your thing here.. and the Java will close the connection
>    // on exit from the "try" block
> }
>
>
> Or you can use SQLTemplate for raw SQL and avoid dealing with connections
> all together, which is a preferred way:
>
>
> http://cayenne.apache.org/docs/3.1/cayenne-guide/queries.html#sqltemplate
>
> Andrus
>
>
> On Oct 14, 2014, at 6:54 PM, Lon Varscsak <lon.varsc...@gmail.com> wrote:
>
> > Hey all,
> >
> > I have some code that executes some raw SQL and historically (with EOF) I
> > just get the connection that would normally be used for that editing
> > context.  No problems.  So I'm trying to implement that similarly in
> > Cayenne, and I'm getting the DataNode's DataSource's connection, and it
> > works, but then any subsequent calls (at least within the same request) I
> > get a timeout because it's like the connection is being used (even though
> > I'm done executing my query) and unavailable to the pool (error:  Can't
> > obtain connection. Request timed out. Total used connections: 1)
> >
> > I've been using this code with a JDBC Connection for a very long time,
> and
> > I think I'm releasing the resources I create (the Statement).  What
> could I
> > be missing here?  Is there a better way to "checkout" and then "release"
> > the connection?
> >
> > Thanks,
> >
> > Lon
>
>

Reply via email to