grails - Grails和Tomcat重复 “java.lang.IllegalStateException: Cannot forward after response has been committed”错误

标签 grails grails-2.0

请在Grails用户邮件列表上查看我的post。本质上,每隔几个请求,Grails 2.x就会出现错误“在提交响应后无法转发”。所有类型的URL, Controller ,GSP,CSS文件,JS文件甚至图像文件都会发生这种情况。我已经在Windows XP 32位,Windows 7 32位和Centos 64位上尝试了带有Tomcat 6.0.35和Tomcat 7.0.25的Grails 2.0.0和Grails 2.0.1。所有这些组合都会出现错误。

正如我在post中提到的那样,我们的代码中没有response.redirect或response.forward语句。这在我们的生产应用程序上造成了严重的问题,因此需要帮助来确定可以解决问题的其他方面。

最佳答案

这已经解决了。在应用程序中的一个 Controller 中,响应输出流被直接写入,但操作结束后未明确关闭。看来Tomcat和Jetty回收了响应对象。当没有将其输出流更早关闭的响应对象被回收以用于将来的请求并对其执行重定向时,重定向将失败。

代码已更改,错误现在已消失。得到的教训是,在发生此类错误的任何时间,请扫描整个代码库以直接访问响应输出流,并在现有 Controller 方法之前负责地关闭输出流。

关于grails - Grails和Tomcat重复 “java.lang.IllegalStateException: Cannot forward after response has been committed”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594883/

相关文章:

grails - 如何在Grails上从Withings api获取用户信息

testing - Grails 2.0 集成测试污染?

grails - 错误 500 : Error processing GroovyPageView: null

html - 浏览器无法正确解析HTML-Grails 2

rest - 使用内存中的H2数据库在Grails 2.4.4中执行REST API功能测试时,表锁定超时

grails - Grails模式可在错误时重用模板

grails - Grails Rateable插件未在数据库中保存评分

grails - 初始化GroovyPageView时出错

grails - Grails管理自定义插件的策略

hibernate - 如何从grails的def列表中删除项目