org.apache.commons.dbcp.DelegatingPreparedStatement is closed..what is it?

Hi guys,

i need your help.

In my jsf application i've created one arraylist in which i collect prepared statements like

PreparedStatement pst2 =null;

pst2 = conn

.prepareStatement("INSERT INTO esperimento(id_,username,nometeam) VALUES(null,?,?);

pst2.setString(1, bean2.getLoginName());

pst2.setString(2, bean2.getTeamName());

pst2.setString(3, platformName);

experiments.add(pst2);

and i've another class with a method that execute the preparedstatements presents into experiments arraylist all at once(in a transaction).In my example there is only a prepared statement..

I've an exception launching my application

java.sql.SQLException: org.apache.commons.dbcp.DelegatingPreparedStatement is closed.

at org.apache.commons.dbcp.DelegatingStatement.checkOpen(DelegatingStatement.java:136)

at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)

at giu.QueryManager.executeTransaction(QueryManager.java:40)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)

at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)

at javax.faces.component.UICommand.broadcast(UICommand.java:312)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)

at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at giu.AuthorizationFilter.doFilter(AuthorizationFilter.java:59)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)

at java.lang.Thread.run(Unknown Source)

What can i do?'

Please help me....

Here is my method

public String executeTransaction()throws SQLException{

Experiment exp = (Experiment) ViewUtils

.eval("#{experiment}");

DataSource dataSource = Singleton.getInstance().getDataSource();

Connection conn=null;

try{

conn = dataSource.getConnection();

if (conn !=null){

conn.setAutoCommit(false);

if(exp.getExperiments()==null){

System.out.println("esperiments ?null!");

}

else System.out.println("esperiments ?pieno!!");

for (int i=0;i<exp.getExperiments().size();i++){

try{

((java.sql.PreparedStatement) exp.getExperiments().get(i)).executeUpdate();

}

catch(Exception e){

e.printStackTrace();}

}

}

if (exp.getExperiments().size()>0){

conn.commit();// Rende permanenti tutte le modifiche.

}else

conn.rollback();// Annulla tutte le modifiche.

}

catch (Exception e){

e.printStackTrace();

}finally{

try{

if (conn !=null)

conn.close();

}catch (SQLException e){

}

;

}

return"analysis";

}

[7617 byte] By [giubata] at [2007-10-3 4:31:07]
# 1
You are not creating your prepared statements on the connection that are in the method executeTransaction but somewhere else.Most likely, that connection is closed down when you execute the executeTransaction-method and it is not possible to "store" StoreProcs like that.
Lajma at 2007-7-14 22:34:28 > top of Java-index,Java Essentials,Java Programming...
# 2

Thanks very much for you reply...

but i'm not solved my problem!!!

I've called that connection in which i have preparedStatement connection,i've created getter and setter method and i i've recalled this connection in the executeTransaction method to use the same connection but i have the same error!!!!!!!

Please help me,i'm crazying and i look for a solution.....thanks very much

giubata at 2007-7-14 22:34:28 > top of Java-index,Java Essentials,Java Programming...
# 3
resolved!!!!It was that i have pst2.close()!!!!! before executing transaction!!!Excuse me and thanks...
giubata at 2007-7-14 22:34:28 > top of Java-index,Java Essentials,Java Programming...