• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Tim Cooke
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Knute Snortum
  • paul wheaton
  • Devaka Cooray
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Ron McLeod
  • Piet Souris
  • Ganesh Patekar
Bartenders:
  • Tim Holloway
  • Carey Brown
  • salvin francis

Restarting JDBC Connection Pool in a clustered Architecture

 
Greenhorn
Posts: 22
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I am working on modifying my JDBC Connection Pool code to handle the situation where the database gets closed/bounced and reopened resulting in the loss of the Connection Pool. Without the code below I was throwing a Broken Pipe error, a Socket Write error, or a Connection Closed error.
The following block of code succeeds in rebuilding the connection pool in my testing environment which consists of one instance of WebLogic 7.0. The following block is the catch block of my getConnection method:
--------------------------------------------------
catch (Exception e){
//If the database goes down the connection pool is lost. Attempt to rebuild the connection pool.
String errorString = e.toString().toLowerCase();
if (errorString.indexOf("broken pipe")!=-1 || errorString.indexOf("socket write error")!=-1 || errorString.indexOf("closed connection")!=-1) {
try {
InitialContext ctx = new InitialContext();
MBeanHome mbeanHome = (MBeanHome)ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);

WebLogicObjectName pname = new WebLogicObjectName("serverName", "ServerRuntime", mbeanHome.getDomainName());
WebLogicObjectName oname = new WebLogicObjectName(this.systemString.toLowerCase() + "Pool", "JDBCConnectionPoolRuntime", mbeanHome.getDomainName(),"serverName", pname);
JDBCConnectionPoolRuntimeMBean cprmb = (JDBCConnectionPoolRuntimeMBean)mbeanHome.getMBean(oname);
cprmb.reset();
this.dl.logDebugMessage("Connection Pool Reset.");
dbConn = ds.getConnection();
dbConn.setAutoCommit(false);
if(dbConn!=null)
this.dl.logDebugMessage("Getting a connection from dds - AFTER Connection Pool Reset.");
}
catch (Exception newE) {
this.dl.logException(newE);
}
--------------------------------------------------
My question is - What needs to be changed (if anything) when I move this out onto an architecute that consists of a cluster containing 2 servers. Do I need to reset the JDBCConnectionPoolRuntimeMBean on both servers? Reset the JDBCConnectionPoolRuntimeMBean on the cluster? I am most concerned with the "server Name" string and whether that needs to be the server name(s) or the cluster name.
I have little to no experience in working with clusters so my wording/questions may be flawed.
[ April 03, 2003: Message edited by: Tony Moses ][LIST]
[ April 03, 2003: Message edited by: Tony Moses ]
[ April 03, 2003: Message edited by: Tony Moses ]
 
You’ll find me in my office. I’ll probably be drinking. And reading this tiny ad.
professionally read, modify and write PDF files from Java
https://products.aspose.com/pdf/java
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!