Looks like a Hibernate issue. When underlying frameworks throw exceptions in templating solutions the stack traces can be large, but the problem is obvious.
This isn't a Struts issue, but if you need assistance figuring out where the two sessions are coming from you could post to the user list. Dave On Nov 4, 2010 2:07 PM, "Miguel" <miguel...@gmail.com> wrote: > Hello, > I have a problem and Struts reports an error in one of it's own files: > error.ftl. > My code throws an exception and then the error.flt throws another > exception while trying to print my exception, thus masking mine. > I'm posting to dev, because I think it's an struts problem. Thanks for > your help. > I have pasted the stacktrace below. > > The following code that throws the exception: > <#if (msgs?size > 1)> > <ol> > <#list msgs as msg> > <#if (msg?is_method)> > <li>${msg[0]}</li> <--- this line > <#else> > <li>${msg}</li> > </#if> > </#list> > > > Struts Problem Report > Struts has detected an unhandled exception: > > Messages: > > 1. FreeMarker template error! > > 2. > 3. > 4. Method public java.lang.String > org.hibernate.exception.NestableRuntimeException.getMessage(int) threw an > exception when invoked on org.hibernate.HibernateException: Illegal attempt > to associate a collection with two open sessions > 5. The problematic instruction: > 6. ---------- > 7. ==> ${msg[0]} [on line 68, column 29 in > org/apache/struts2/dispatcher/error.ftl] > 8. ---------- > 9. > 10. Java backtrace for programmers: > 11. ---------- > 12. freemarker.template.TemplateModelException: Method public > java.lang.String > org.hibernate.exception.NestableRuntimeException.getMessage(int) threw an > exception when invoked on org.hibernate.HibernateException: Illegal attempt > to associate a collection with two open sessions > 13. at > freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130) > 14. at > freemarker.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138) > 15. at > freemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111) > 16. at > freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90) > 17. at > freemarker.core.Expression.getAsTemplateModel(Expression.java:89) > 18. at > freemarker.core.Expression.getStringValue(Expression.java:93) > 19. at > freemarker.core.DollarVariable.accept(DollarVariable.java:76) > 20. at freemarker.core.Environment.visit(Environment.java:209) > 21. at > freemarker.core.MixedContent.accept(MixedContent.java:92) > 22. at freemarker.core.Environment.visit(Environment.java:209) > 23. at freemarker.core.IfBlock.accept(IfBlock.java:82) > 24. at freemarker.core.Environment.visit(Environment.java:209) > 25. at > freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179) > 26. at freemarker.core.Environment.visit(Environment.java:416) > 27. at > freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) > 28. at freemarker.core.Environment.visit(Environment.java:209) > 29. at > freemarker.core.MixedContent.accept(MixedContent.java:92) > 30. at freemarker.core.Environment.visit(Environment.java:209) > 31. at freemarker.core.IfBlock.accept(IfBlock.java:82) > 32. at freemarker.core.Environment.visit(Environment.java:209) > 33. at > freemarker.core.MixedContent.accept(MixedContent.java:92) > 34. at freemarker.core.Environment.visit(Environment.java:209) > 35. at > freemarker.core.Environment.process(Environment.java:189) > 36. at freemarker.template.Template.process(Template.java:237) > 37. at > org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:748) > 38. at > org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505) > 39. at > org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.jav > a:395) > 40. at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application > FilterChain.java:242) > 41. at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh > ain.java:208) > 42. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:343) > 43. at > org.springframework.security.web.access.intercept.FilterSecurityInterceptor. > invoke(FilterSecurityInterceptor.java:109) > 44. at > org.springframework.security.web.access.intercept.FilterSecurityInterceptor. > doFilter(FilterSecurityInterceptor.java:83) > 45. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 46. at > org.springframework.security.web.access.ExceptionTranslationFilter.doFilter( > ExceptionTranslationFilter.java:97) > 47. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 48. at > org.springframework.security.web.authentication.AnonymousAuthenticationFilte > r.doFilter(AnonymousAuthenticationFilter.java:78) > 49. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 50. at > org.springframework.security.web.authentication.rememberme.RememberMeAuthent > icationFilter.doFilter(RememberMeAuthenticationFilter.java:119) > 51. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 52. at > org.springframework.security.web.authentication.AbstractAuthenticationProces > singFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188) > 53. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 54. at > org.springframework.security.web.authentication.logout.LogoutFilter.doFilter > (LogoutFilter.java:105) > 55. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 56. at > org.springframework.security.web.context.SecurityContextPersistenceFilter.do > Filter(SecurityContextPersistenceFilter.java:79) > 57. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 58. at > org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(Co > ncurrentSessionFilter.java:109) > 59. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 60. at > org.springframework.security.web.access.channel.ChannelProcessingFilter.doFi > lter(ChannelProcessingFilter.java:109) > 61. at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte > r(FilterChainProxy.java:355) > 62. at > org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy. > java:149) > 63. at > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Delegati > ngFilterProxy.java:237) > 64. at > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilt > erProxy.java:167) > 65. at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application > FilterChain.java:242) > 66. at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh > ain.java:208) > 67. at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja > va:243) > 68. at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja > va:201) > 69. at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:163 > ) > 70. at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108 > ) > 71. at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:556) > 72. at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java > :118) > 73. at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:402) > 74. at > org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:439) > 75. at > org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProt > ocol.java:390) > 76. at > org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java: > 1555) > 77. at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11 > 10) > 78. at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6 > 03) > 79. at java.lang.Thread.run(Thread.java:636) > 80. Caused by: java.lang.NullPointerException > 81. at > freemarker.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.jav > a:85) > 82. at > freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106) > 83. ... 66 more >