home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.oracle      Overblown overpriced overengineered SHIT      2,288 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 1,362 of 2,288   
   John C. Bollinger to Pandis Ippokratis   
   Re: Reestablishing a db connection after   
   29 Apr 04 08:45:38   
   
   XPost: comp.lang.java.databases, comp.lang.java.programmer   
   From: jobollin@indiana.edu   
      
   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   
   jobollin@indiana.edu   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca