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
