Its fine, but why reinvent the wheel? I think you can use the Modular DB actions that offers you a good approach with DB in Cocoon. Also you can concentrate on your application, rather than in this problems. ;-)
Antonio Gallardo. Fabricio Chalub dijo: > Hi, > > I'm trying something here and I would like to see from you if this is > adequate. In some of my logicsheets I'm using a helper class to get > attributes from a database, instead of using, eg, ESQL. So for example: > > Suppose I have a table CAR, with a column COLOR, indexed by key KEY. > And I have a logicsheet like this (I've simplified/cleared the code a > bit, nevermind syntax problems) > > <xsl:template match="car:get-color"> > <!-- return the color of the car $key --> > > <xsp:expr> > > ObjectHelper.getStringAttribute ("CAR", "COLOR", > <xsl:copy-of select="$key"/>, > new DataSourceHelper(manager)) > > </xsp:expr> > > </xsl:template> > > That is, getStringAttribute is a static (synchronized) method that > receives a database connection and DTRT. > > Notice the "new DataSourceHelper (manager)" > > I have also what I call a "DataSourceHelper", that does something like > this: > > this.manager = manager; > dbselector = (ComponentSelector) > manager.lookup(DataSourceComponent.ROLE + "Selector"); > datasource = (DataSourceComponent) dbselector.select("database"); > > Inside "getStringAttribute" I do a "getConnection" and DataSourceHelper > gets me a (new?) connection from the datasource pool. When I'm done, I > close everything (the connection including) and call a method on > DataSourceHelper that does this: > > this.dbselector.release (this.datasource); > this.datasource = null; > manager.release (this.dbselector); > > None of those classes are remotely related to any kind of Avalon > component. They deal with them through the manager available > "magically" on the logicsheet. > > My question is if there is a way of doing this in a more integrated way > to Cocoon/Avalon's components, so I know that I'm using all the pools > efficiently and I'm not leaking any memory (and I'm not prone to > deadlocks either). > > I hope I posted the relevant parts of my code. > > Thanks, > Fabricio > > --------------------------------------------------------------------- > Please check that your question has not already been answered in the > FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> > > To unsubscribe, e-mail: <[EMAIL PROTECTED]> > For additional commands, e-mail: <[EMAIL PROTECTED]> --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]>