By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
438,501 Members | 1,861 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 438,501 IT Pros & Developers. It's quick & easy.

Reestablishing a db connection after a network failure

P: n/a
Hi,

I have the following problem: I am implementing a server in Java and
I use jdbc to connect to an Oracle 9.0.2 db. All seem to work fine,
but when I intensionally cause a network failure (i.e. I remove the
network cable) I get the following exception:

java.sql.SQLException: Io exception: Connection reset by peer: socket
write error

I plug the cable again and I want to reset the java.sql.Connection but
this seems to not work. Any suggestions?
Jul 19 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a

Followups directed to comp.lang.java.programmer.
Pandis Ippokratis wrote:
I have the following problem: I am implementing a server in Java and
I use jdbc to connect to an Oracle 9.0.2 db. All seem to work fine,
but when I intensionally cause a network failure (i.e. I remove the
network cable) I get the following exception:

java.sql.SQLException: Io exception: Connection reset by peer: socket
write error

I plug the cable again and I want to reset the java.sql.Connection but
this seems to not work. Any suggestions?


There may be an option you can use when you set up the connection that
will instruct the driver to attempt to reconnect automatically. The
details and implications should be considered carefully. The MySQL JDBC
driver distributed by MySQL has such a feature, although I'm not sure
whether it handles all cases of connection interruption.

Alternatively, you can wrap the Connection provided by your driver in an
object that handles the details of this scenario, which might include
obtaining a new Connection to replace the interrupted one. If you make
this new object implement Connection itself (and delegate to the
internal collection) then it would be a drop-in replacement. You must
again be careful to consider all the implications, however. For
instance, there are various aspects of DB-side state that are tied to
specific connections; in particular, transactions. There are also
Java-side entities that are tied to specific Connections and would
require considerable additional work to support transparently -- most
particularly Statements and ResultSets.

The best choice may be to better isolate the DB interactions from the
rest of your code so that you can handle exceptions in a sensible way
but in a single place. Implement the Data Access Object pattern, for
instance, and make your data access objects sufficiently smart. If you
need to do so then put a facade around more complicated DB access
activity that knows how to deal with these problems (and others). This
could all be implemented with EJB, which would have some advantages, but
could also be implemented in normal Java code.
John Bollinger
jo******@indiana.edu

Jul 19 '05 #2

P: n/a
Most connection pool implementations handle this sort of thing, with
the added benefit of higher performance.

Apache has a connection pools architecture in their common package:

http://jakarta.apache.org/commons/dbcp/

Or, you can roll your own... it's fairly easy to implement the JDBC
interfaces. Sun had a tutorial on their website at one time
(java.sun.com), but I can't find anymore.

//Nathan

ip********@cmu.edu (Pandis Ippokratis) wrote in message news:<8a**************************@posting.google. com>...
Hi,

I have the following problem: I am implementing a server in Java and
I use jdbc to connect to an Oracle 9.0.2 db. All seem to work fine,
but when I intensionally cause a network failure (i.e. I remove the
network cable) I get the following exception:

java.sql.SQLException: Io exception: Connection reset by peer: socket
write error

I plug the cable again and I want to reset the java.sql.Connection but
this seems to not work. Any suggestions?

Jul 19 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.