Yes, you're right, Scott.
org.ofbiz.entity.connection.DBCPConnectionFactory tells me.


-----Original Message-----
From: Scott Gray [mailto:[email protected]] 
Sent: 2009年9月14日 11:02
To: [email protected]
Subject: Re: Do we need to manually close SQLProcesser?

java.sql.Connection is an interface, the implementation is  
org.apache.commons.dbcp.PoolableConnection.

Regards
Scott

On 14/09/2009, at 2:55 PM, Jack Liu wrote:

> In the close method of class SQLProcessor, the variable _connection  
> is absolutely an instance of java.sql.Connection not  
> PoolableConnection.
>
>
>
>
>
> -----Original Message-----
> From: Scott Gray [mailto:[email protected]]
> Sent: 2009年9月14日 10:44
> To: [email protected]
> Subject: Re: Do we need to manually close SQLProcesser?
>
>
>
> No the connection implementation is a PoolableConnection and closing
>
> it returns it to the pool, if you don't close it then it won't be
>
> returned until the SQLProcessor is finalized at which point it closes
>
> the connection itself.  Just to reiterate in case it isn't clear, you
>
> should always call SQLProcessor.close() when you are done with it.
>
>
>
> Regards
>
> Scott
>
>
>
>
>
> On 14/09/2009, at 2:30 PM, Jack Liu wrote:
>
>
>
>> Hi, Larry
>
>>
>
>> From the constructor of class SQLProcesser, there is no need to
>
>> close it manually.
>
>>
>
>> /**
>
>>    * Construct an object with an connection given. The connection
>
>> will not
>
>>    * be closed by this SQLProcessor, but may be by some other.
>
>>    *
>
>>    * @param helperName  The datasource helper (see entityengine.xml
>
>> <datasource name="..">)
>
>>    * @param connection  The connection to be used
>
>>    */
>
>>   public SQLProcessor(String helperName, Connection connection) {
>
>>       this.helperName = helperName;
>
>>       this._connection = connection;
>
>>
>
>>       // Do not commit while closing
>
>>       if (_connection != null) {
>
>>           _manualTX = false;
>
>>       }
>
>>   }
>
>>
>
>>
>
>> And the close method closes the true connection, not a proxy or
>
>> something else,
>
>> So if you close it by yourself, the pool will be run out.
>
>>
>
>>
>
>>
>
>>
>
>> -----Original Message-----
>
>> From: Larry.Liu [mailto:[email protected]]
>
>> Sent: 2009年9月14日 9:45
>
>> To: [email protected]
>
>> Subject: Re: Do we need to manually close SQLProcesser?
>
>>
>
>> Hi Gray,
>
>>
>
>> Thanks for your help,
>
>>
>
>> So according to my understanding, trying to close the SQLProcessor
>
>> will
>
>> cause available connection in the pool fewer and fewer and there
>
>> will be "No
>
>> ManagedConnections Available!" exception in the end, isn't it?
>
>>
>
>> Now we have a B2C website running on ofbiz, using Database mysql5.0
>
>>
>
>> we only have about 2000 visitors one day, we have set the max mysql
>
>> connection to 150, in my assumption, that is enough, but it keeps on
>
>> throwing the error
>
>> "No ManagedConnections Available!" every one or two days,
>
>>
>
>> So there could be the problem of
>
>>
>
>> 1. Ofbiz out-of-the-box code leads to the connection leakage
>
>> 2. Customization code leads to the connection leakage.
>
>>
>
>> Obviously we thought the problem is in our customized code, and
>
>> SQLProcessor
>
>> is the only part where we use the connections directly. so that's
>
>> why I am
>
>> asking the question in the first mail.
>
>>
>
>> But it seems this is not the problem.
>
>>
>
>> Hope somebody can share more information about this "No
>
>> ManagedConnections
>
>> Available!" information, thanks.
>
>>
>
>> Thanks.
>
>>
>
>> Regards,
>
>> Liu Xiangqian
>
>>
>
>> Wizitsoft Information Technology Ltd.
>
>> www.wizitsoft.com | (86) 010-62670653 ext 614
>
>>
>
>>
>
>> On Fri, Sep 11, 2009 at 10:58 AM, Scott Gray <[email protected]
>
>>> wrote:
>
>>
>
>>> Hi Liu,
>
>>>
>
>>> Yes you should call close() on the SQLProcessor and no closing the
>
>>> connection will not prevent it from being returned to the pool.
>
>>> Whether it
>
>>> will solve your problem or not I don't know.
>
>>>
>
>>> Regards
>
>>> Scott
>
>>>
>
>>> HotWax Media
>
>>> http://www.hotwaxmedia.com
>
>>>
>
>>> On 11/09/2009, at 2:44 PM, Larry.Liu wrote:
>
>>>
>
>>> Hi,
>
>>>>
>
>>>> We have created SQLProcessor in our code manually and also invoke
>
>>>>
>
>>>> process.close()
>
>>>>
>
>>>> after execute the sql query or update, and we are assumpting this
>
>>>> caused
>
>>>> error of
>
>>>>
>
>>>> No ManagedConnections Available
>
>>>>
>
>>>> I have looked into the file EntitySQLProcessor.bsh, that's the
>
>>>> file for
>
>>>> webtools module SQL Processor page, I didn't see any closure of the
>
>>>> SQLProcessor.
>
>>>>
>
>>>> So here are two questions,
>
>>>>
>
>>>> 1. Do we need to manually close the SQLProcessor?
>
>>>>
>
>>>> 2. Close one SQLProcessor instance will cause the connection
>
>>>> attached to
>
>>>> this process being closed and make available connections in the
>
>>>> pool fewer
>
>>>> and fewer?
>
>>>>
>
>>>> Thanks.
>
>>>>
>
>>>> Regards,
>
>>>> Liu Xiangqian
>
>>>>
>
>>>> Wizitsoft Information Technology Ltd.
>
>>>> www.wizitsoft.com | (86) 010-62670653 ext 614
>
>>>>
>
>>>
>
>>>
>
>
>

Reply via email to