Hallo,
in meiner Anwendung wirft Hibernate nach einer noch unbestimmten Zeit eine Exception. Bei einem aktuellen Beispiel wird die Exception in einer DAO geworfen die eine SELECT-Abfrage an die Datenbank senden. Die DAO wird eine unbestimmte Anzahl erfolgreich durchlaufen. Nur auf einmal bekomme ich eine Exception das die Session geschlossen ist. Die Exception wird dann geworfen wenn versucht wird ein rollback durchzuführen. Es hilft dann nur noch den Tomcat neu zu starten.
Der Stacktrace:
Die XyDao:
Warum wird diese DAO eine gewisse Zeit lang erfolgreich gelaufen und wirft dann doch eine Exception?
in meiner Anwendung wirft Hibernate nach einer noch unbestimmten Zeit eine Exception. Bei einem aktuellen Beispiel wird die Exception in einer DAO geworfen die eine SELECT-Abfrage an die Datenbank senden. Die DAO wird eine unbestimmte Anzahl erfolgreich durchlaufen. Nur auf einmal bekomme ich eine Exception das die Session geschlossen ist. Die Exception wird dann geworfen wenn versucht wird ein rollback durchzuführen. Es hilft dann nur noch den Tomcat neu zu starten.
Der Stacktrace:
Code:
org.hibernate.SessionException: Session is closed!
at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:49)
at org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1314)
at sun.reflect.GeneratedMethodAccessor238.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy11.getTransaction(Unknown Source)
at com.xx.xyz.comp.dao.Dao.rollback(Dao.java:36)
at com.xx.xyz.comp.dao.XyDao.get(XyDao.java:38)
at com.xx.xyz.action.ActionAbc.execute(ActionAbc.java:52)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Die XyDao:
Code:
public List get(String arg0) {
try {
super.setSessionFactory(context);
super.begin();
List liste = super.getSession().createQuery("FROM Tabelle WHERE name=:name").setString("name",arg0).list();
super.commit();
super.close();
return liste;
} catch (HibernateException e) {
super.rollback();
throw e;
}
}
Warum wird diese DAO eine gewisse Zeit lang erfolgreich gelaufen und wirft dann doch eine Exception?
Zuletzt bearbeitet: