Yep. You must close it, and not worry about connection pooling in your code. 
That part is encapsulated, so "close" returns it ot the pool.

Andrus

On Oct 14, 2014, at 8:38 PM, Lon Varscsak <lon.varsc...@gmail.com> wrote:
> Okay, that's the issue (not calling close()).  I thought what I was getting
> back was a real JDBC Connection, but it looks like I'm getting back a
> ConnectionWrapper, which when closed, returns the connection to pool.  I
> can do something conditionally with this.
> 
> Thanks,
> 
> Lon
> 
> On Tue, Oct 14, 2014 at 5:12 PM, Lon Varscsak <lon.varsc...@gmail.com>
> wrote:
> 
>> 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