One more 'anti-pattern', actually, it's a bug IMO. When using the Remote data 
source code like the following can lead to a leak pretty quickly:


  | 
  | try
  | {
  |   Connection conn = DataSource.getConnection()
  |   PreparedStatement ps = conn.prepareCall("SomeSQL");
  |   ps.close();
  | 
  | }catch(Exception e)
  | {
  | 
  | }
  | finally
  | {
  |   
  |    if(ps != null)
  |      ps.close();
  | 
  |    if(conn != null)
  |      conn.close();
  | 
  | }
  | 

What ends up happening in this particular instance is that the first ps.close() 
actually removes the Statement from the internal map on the server side. At the 
second close attempt a SQLException is thrown (who knows why). As a result, the 
connection itself would never get closed in this case. This actually crept up 
on the TCK for Oracle10g and was causing all sorts of issues.

Yes, I know that to be 'truly' safe both the ps.close() and the conn.close() 
should be contained within their own try/catch/finally block but this is never 
a guarantee.



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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4038366
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to