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