[jboss-jira] [JBoss JIRA] Closed: (JBAS-5303) JBoss doesn't recognize closing ResultSet by PreparedStatement close() method

Adrian Brock (JIRA) jira-events at lists.jboss.org
Mon Mar 10 20:47:58 EDT 2008


     [ http://jira.jboss.com/jira/browse/JBAS-5303?page=all ]

Adrian Brock closed JBAS-5303.
------------------------------

    Resolution: Rejected

There never was a 4.0.5.SP1 release, so I don't why you are raising bug reports against it?

Anyway this isn't a bug.
This is a message you get when you use
<track-statements>true</track-statements>
the default is (and has been for a long time)
<track-statements>nowarn</track-statements>

Code from 4.0.5.GA WrappedStatement
http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbossas/tags/JBoss_4_0_5_GA/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedStatement.java?revision=57516&view=markup

// i.e. ps.close()
   public void close() throws SQLException
   {
      synchronized (lock)
      {
         if (closed)
            return;
         
         closed = true;
      }
      lc.unregisterStatement(this);
      internalClose();
   }

// closes the result sets
   protected void internalClose() throws SQLException
   {
      synchronized (lock)
      {
         closed = true;
      }
      try
      {
         closeResultSets();
      }
      finally
      {
         s.close();
      }
   }

   protected void closeResultSets()
   {

// Doesn't do anything if <track-statements>false</track-statements>

      if (lc.getTrackStatements() == BaseWrapperManagedConnectionFactory.TRACK_STATEMENTS_FALSE_INT)
         return;

      synchronized (this)
      {
         if (resultSets == null)
            return;
         for (Iterator i = resultSets.entrySet().iterator(); i.hasNext();)
         {
            Map.Entry entry = (Map.Entry) i.next();
            WrappedResultSet resultSet = (WrappedResultSet) entry.getKey();

// But warns you if you have <track-statements>true</track-statements>

            if (lc.getTrackStatements() == BaseWrapperManagedConnectionFactory.TRACK_STATEMENTS_TRUE_INT)
            {
               Throwable stackTrace = (Throwable) entry.getValue();
               lc.getLogger().warn("Closing a result set you left open! Please close it yourself.", stackTrace);
            }
            try
            {
               resultSet.internalClose();
            }
            catch (Throwable t)
            {
               lc.getLogger().warn("Error closing a result set you left open! Please close it yourself.", t);
            }
         }
         resultSets.clear();
      }
   }

> JBoss doesn't recognize closing ResultSet by PreparedStatement close() method
> -----------------------------------------------------------------------------
>
>                 Key: JBAS-5303
>                 URL: http://jira.jboss.com/jira/browse/JBAS-5303
>             Project: JBoss Application Server
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: JCA service
>    Affects Versions: JBossAS-4.0.5.SP1 
>         Environment: Linux; jre 1.5.012
>            Reporter: Evanildo Batista
>
> In a database query, after ps.executeQuery(),  when the PreparedStatement close() is declared before ResultSet close() the ps.close() closes de ResultSet.
> ( "... A ResultSet object is automatically closed when the Statement object that generated it is closed" - ResultSet API doc )
> But, when this occur Jboss AS doesn't recognize the close in the ResultSet and shows this log:
> # WARN[20 Feb 2008 08:01:00,107] - Closing a result set you left open! Please close it yourself.  
> # java.lang.Throwable: STACKTRACE  
> #         at java.lang.Throwable.<init>(Throwable.java:56)  
> #         at java.lang.Throwable.<init>(Throwable.java:67)  
> #         at org.jboss.resource.adapter.jdbc.WrappedStatement.registerResultSet(WrappedStatement.java:617)  
> #         at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:237)  
> #         at dao.ProdDAO.getIdProd(ProdDAO.java:1504)  
> #         at dao.ProdDAO.getListaProd(ProdDAO.java:73)  
> #         at dao.ProdDAO.getListaProd(ProdDAO.java:1015)  
> #         at action.ProdAction.buscarProd(ProdAction.java:1032)  
> #         at action.ProdAction.buscarProdutos(ProdAction.java:1082)  
> #         at sun.reflect.GeneratedMethodAccessor291.invoke(Unknown Source)  
> #         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
> #         at java.lang.reflect.Method.invoke(Method.java:615)  
> #         at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)  
> #         at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)  
> #         at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)  
> #         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)  
> #         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)  
> #         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)  
> #         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)  
> #         at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)  
> #         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)  
> #         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)  
> #         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)  
> #         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)  
> #         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)  
> #         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)  
> #         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)  
> #         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)  
> #         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)  
> #         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)  
> #         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)  
> #         at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)  
> #         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)  
> #         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)  
> #         at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)  
> #         at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)  
> #         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list