[jboss-user] [JCA/JBoss] - Re: idle time out question

adrian@jboss.org do-not-reply at jboss.com
Fri Feb 23 06:57:54 EST 2007


"arparikh" wrote : 
  | Below is the code where we call getConnection to the connection object. We are getting NullPointer where we do conn.close(). The thing that I am wondering is if we are getting null conn, we should get null pointer at conn.setAutoCommit in getConnection or conn.createStatement. But instead we are getting on conn.close
  | 
  |     public void doSelect(String p_sql, int[] p_dataTypes) throws DBException
  |     {
  |         Connection conn = null;
  |         try
  |         {
  |             conn = DBConnMgr.getInstance().getConn(this.m_resourceId);
  |         }
  |         finally
  |         {
  |             try
  |             {
  |             }
  |             finally
  |             {
  |                 try
  |                 {
  |                    conn.close();
  |                 }
  |                 catch (SQLException se)
  |                 {
  |                     m_logger.info("Failed to close DB connection");
  |                 }             
  |             }
  |         }
  |     }
  | 
  | Thanks for the assistance

This is a basic java question. What do you think happens
when getConn() throws an exception? Do you think it still invokes
the finally block(s)?

Here are the correct patterns:

1) Allocate before entering try/finally

  | Connection c = allocateConnection();
  | try
  | {
  | }
  | finally
  | {
  |    // c cannot be null
  |    c.close();
  | }
  | 

2) Allocate inside the try block (because you want only one catch block)
Therefore you must check in the finally whether you actually got a connection

  | Connection c = null;
  | try
  | {
  |    c = allocateConnection();
  | }
  | catch (SQLException e)
  | {
  | }
  | finally
  | {
  |    // c could be null if allocateConnection() threw an exception
  |    if (c != null)
  |       c.close();
  | }
  | 


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4021063#4021063

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4021063



More information about the jboss-user mailing list