On a book i read the following example (at the bottom). I imported it in a jar 
than run with jboss. 

The error on  interroga(String str)  method is:
anonymous wrote : 
  | ON CLIENT
  | java.sql.SQLException: Connection handle has been closed and is unusable 
  | ON SERVER
  | [CachedConnectionManager] Closing a connection for you. Please close them 
yourself: [EMAIL PROTECTED]
  | 
The problem is the that is in the apriConnessione() i got a call for make a db 
connection. This one is activated fist from  ejbActivate(); then jboss close 
automatically connection  without a ejbPassivate(). Then i enter in Interroga() 
method and the connection is no more avaible giving me exception.

I read the FAQ , expecially 
http://www.jboss.org/wiki/Wiki.jsp?page=WhatDoesTheMessageDoYourOwnHousekeepingMean
 
and so i correct the exercise putting alla connection statemente in the method 
interroga():

  | con = ds.getConnection();
  | &
  | if(rs != null) rs.close();
  | if(ps != null) ps.close();
  | if(con != null) con.close();
  | 

In this case the program has no error. 
BUT
I do not understand the beaviour of jboss because i studied that in 
ejbPassivate / ejbActivate i must close connections; not in every method!
Reading the FAQ i understand that i must open & close connection in every 
method. 
Can you explain me why? .. or what i misunderstand :)
thankyou, Bye


  | package StatefulDb;
  | 
  | import javax.ejb.*;
  | import java.sql.*;
  | import javax.sql.*;
  | import javax.naming.*;
  | 
  | public class StatefulJdbcBean implements SessionBean {
  |     
  |     private SessionContext ctx;      
  |     private DataSource ds = null;
  |     
  |     transient private Connection con = null;
  |     transient private PreparedStatement ps = null;
  |     transient private ResultSet rs = null;
  |     
  |     private String cognome = null;
  |     private String nome = null;
  |     private String p_iva = null;
  |     private String cod_fiscale = null;
  |      
  |     public StatefulJdbcBean() {}
  |     
  |     public void setSessionContext(SessionContext c) {
  |         ctx=c;
  |     }
  |     
  |     public void ejbCreate(){
  |             InitialContext initCtx = null;
  |         try {
  |              initCtx = new InitialContext();
  |              ds = (javax.sql.DataSource) 
  |                     initCtx.lookup("java:comp/env/jdbc/DSCliente");
  |         } catch(NamingException ne) {
  |             System.out.println("UNABLE to get a connection from 
  |                                [java:comp/env/jdbc/DSCliente]");
  |             throw new EJBException("Unable to get a connection 
  |                                    from [java:comp/env/jdbc/DSCliente]");
  |         } finally {
  |             try {
  |                 if(initCtx != null) initCtx.close();
  |             } catch(NamingException ne) {
  |                 System.out.println("Error closing context: " + ne);
  |                 throw new EJBException("Error closing context " + ne);
  |             }
  |         }
  |     }  
  |       
  |     public void ejbRemove(){
  |             try{
  |                 chiudiConnessione();
  |             }catch(SQLException ex){
  |           ex.printStackTrace();
  |                 throw new EJBException("Error closing resources " + ex);
  |        }    
  |     }
  |    
  |     public void ejbPassivate(){
  |             try{
  |                 chiudiConnessione();
  |             }catch(SQLException ex){
  |           ex.printStackTrace();
  |                 throw new EJBException("Error closing resources " + ex);
  |       } 
  |     }
  | 
  |     public void ejbActivate(){
  |       try{
  |                 apriConnessione();
  |             }catch(SQLException ex){
  |                 ex.printStackTrace();
  |                 throw new EJBException("Error in opening a connection " + 
ex);
  |          } 
  |     }
  | 
  |     public void apriConnessione() throws SQLException {
  |              con = ds.getConnection();
  |     }
  |     
  |     public void chiudiConnessione() throws SQLException {
  |     if(rs != null) rs.close();
  |     if(ps != null) ps.close();
  |     if(con != null) con.close();
  |     }
  |     
  |     public void interroga(String str) throws SQLException {   
  |          ps = con.prepareStatement(str);
  |          rs = ps.executeQuery();                        
  |        if (rs.next()){
  |            cognome=rs.getString("COGNOME");
  |            nome=rs.getString("NOME");
  |            p_iva=rs.getString("P_IVA");
  |            cod_fiscale=rs.getString("COD_FISCALE");
  |          }
  |     }
  | 
  |     public String getCognome(){
  |             return cognome;
  |     }
  |     
  |     public String getNome(){
  |             return nome;
  |     }
  | 
  |     public String getP_iva(){
  |             return p_iva;
  |     }
  | 
  |     public String getCod_fiscale(){
  |             return cod_fiscale;
  |     }    
  | }
  | 
  | 
  | 
  | 

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

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


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to