Olivier Billard wrote:

Hi all !

I wonder how to use a DataSourceComponent and its connection in a custom cocoon avalon component, that is ThreadSafe, to use all performance and connection pool used in Cocoon.

Should I :
- get a connection via datasource.getConnection() and close() it for each public method call,
- get a connection in the initialize() method from the interface Initializable, close() it on the dispose() method from Disposable interface, and only create a Statement for each public method call ?
- implement another avalon interface, like Runnable, to get/relase the Connection ?


I looked for exemples in the databases block, but the helpers are not Components.


If your component is ThreadSafe, a single instance of it will exist in the whole system. JDBC connections being non thread safe, you *must* get and close them at each call. Don't be afraid to call close(): the connection you get is a wrapper managed by the DataSourceComponent which puts back the real request in the pool for later reuse when close() is called on the wrapper.

Sylvain

--
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }
Orixo, the opensource XML business alliance  -  http://www.orixo.com




Reply via email to