Thomas A. Russ wrote:
jross<joelc@cognyx.com> writes:
I started to do some testing and made a small java class to replicate
what our java apps are doing
Java Code: http://pastebin.org/108202
Running both these scripts at the some time seemed to be ok, but after a
while the jdbc driver was complaining about
"Server configuration denies access to data source"
Output of `netstat -tnap | grep 3306` after running and crashing it a
few times: http://pastebin.org/108212
As you can see there a heap of packets queued for sending and receiving
after a crash.
The perl script is closing the socket correctly, but I'm not sure if the
jdbc driver is closing the sockets correctly??
Generally you would want to put the code that closes the connection into
a "finally" clause in your try block. That way your code will still
close the connection if an error is encountered. FINALLY is really
important for doing robust resource management.
What I like to do is the following, using this utility method:
/** Safe way to close DB connections.
*
* @param conn Connection to be closed. May be null.
*/
public static void closeDBConnection(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (Exception e) {/* Do Nothing */
}
}
}
And then write the DB code something like this:
Connection conn = null;
try {
conn = DriverManager.getConnection(...);
}
catch (...) {...}
...
finally {
closeDBConnection(conn);
conn = null;
}