(Damn web mail, sent it before I was finished)
Hi
Anybody got any best practices for how to deal with connection problems
in JDBC with DBCP?
I am working on a storage tier where the DAOs can encounter faulty
database connections, either closed or other-wise non functional
connections. The database connection is pooled with Commons DBCP and my
initial thought was to reinitialise or restart the pool, if there were any
problems.
But then I realised that the pool can test connections before giving it to
the application, so now I am moving into muddy waters, because I dont know
much about these details.
My original code is something like:
while (retry > 0) {
Connection con = ds.getConnection
if (con==null) {
dsFactory.restartDS();
retry--:
continue;
}
try {
dao1.execute();
dao2.execute();
} catch (SQLExceptions e) {
retry--:
continue;
if (retry == 0) {
throw new FaultRuntimeException("Can not complete operation", e)
}
con.close();
}
Not knowing the details of how the DBCP, DataSource or JDBC works in these
situations, this code is prone to problems.
I will continue to investigate, but any feedback about what to look at is
appreciated.
regards
thomas
>
> Hi
>
> Anybody got any best practices for how do I deal with connection problems
> in JDBC?
>
> I am working on a storage tier where the DAOs can encounter faulty
> database connections, either closed or other-wise non functional
> connections.
> The database connection is pooled with Commons DBCP, and my initial
> thought was to reinitialise or restart the pool, if there were any
> problems.
> But then I realised that the pool can test connections before giving it to
> the application, so now moving into muddy waters because I dont know much
> about these details.
>
> My original code is something like:
>
> while (retry > 0) {
> Connection con = ds.getConnection
> if (con==null) {
> dsFactory.restartDS();
> retry--:
> continue;
> }
> try {
> dao.execute();
> } catch (SQLExceptions e) {
>
> con.close();
> }
>
> Not knowing the details of how the DBCP or the DataSource works in these
> situations, make this code prone to problems.
>
> I will continue to investigate, but any feedback about what to look at is
> appreciated.
>
> regards
>
> thomas
>