It's quite likely that the problem was indeed storing the datasource as a local variable in my data class. I would however note that this behavior seems to be undocumented - if it's considered bad practice or potentially dangerous to retain a reference to a datasource, it should be noted as such in its documentation, or in the method that retrieves that object.
In fact, the latter should have that documentation - the DataSource documentation itself ((http://download.oracle.com/docs/cd/E17476_01/java se/1.5.0/docs/api/javax/sql/DataSource.html)) does not hint at any unforseen consequences (it's an interface, it doesn't have to), nor do the implementation classes found in apache-dbcp (as referred to in the DataSourceManager class).
Insofar as I can see, the datasource object should be retainable, as it supports changing properties on the fly. Of course, I don't know the implementation details, so I'm probably wrong.
Anyways, problem solved, thanks!