s2sh中出现的错误:
严重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:752)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:662)相关代码:
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

public boolean updateAccount(Account account) {

super.getHibernateTemplate().update(account);
return true;
}
}
页面显示错误:
Struts Problem Report
Struts has detected an unhandled exception: Messages:  FreeMarker template error!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
The problematic instruction:
----------
==> ${msg[0]} [on line 68, column 29 in org/apache/struts2/dispatcher/error.ftl]
----------Java backtrace for programmers:
----------
freeer.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
at freeer.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
at freeer.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138)
at freeer.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111)
at freeer.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90)
at freeer.core.Expression.getAsTemplateModel(Expression.java:89)
at freeer.core.Expression.getStringValue(Expression.java:93)
at freeer.core.DollarVariable.accept(DollarVariable.java:76)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.MixedContent.accept(MixedContent.java:92)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.IfBlock.accept(IfBlock.java:82)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
at freeer.core.Environment.visit(Environment.java:416)
at freeer.core.IteratorBlock.accept(IteratorBlock.java:102)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.MixedContent.accept(MixedContent.java:92)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.IfBlock.accept(IfBlock.java:82)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.MixedContent.accept(MixedContent.java:92)
at freeer.core.Environment.visit(Environment.java:209)
at freeer.core.Environment.process(Environment.java:189)
at freeer.template.Template.process(Template.java:237)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:748)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at freeer.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85)
at freeer.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
... 39 more

解决方案 »

  1.   

    抛出异常:
    ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
    从网上找了下资料,综合一下原因分析:
    这是web容器生成的servlet代码中有out.write(””),这个和JSP中调用的response.getOutputStream()产生冲突.
    即Servlet规范说明,不能既调用 response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,在调用第二个时候应会抛出 IllegalStateException,因为在jsp中,out变量是通过response.getWriter得到的,在程序中既用了response.getOutputStream,又用了out变量,故出现以上错误。
    解决方案:
    1.在程序中添加:
    out.clear();
    out = pageContext.pushBody();
    就可以了;2,不要在%〕〔%之间写内容包括空格和换行符
    3,在页面写入图片的时候,需要flush()
     OutputStream output=response.getOutputStream();
     output.flush();
    4,在页面确定写入<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312”>