使用Grails和Tomcat重复“java.lang.IllegalStateException:无法在响应提交后转发”错误

时间:2012-03-07 02:13:19

标签: grails grails-2.0

请参阅Grails用户邮件列表中的post。基本上,我得到错误"在提交响应后无法转发"每次请求后都使用Grails 2.x.对于所有类型的URL,控制器,GSP,CSS文件,JS文件甚至图像文件都会发生这种情况。我在Windows XP 32位,Windows 7 32位和Centos 64位上尝试过Grails 2.0.0和Grails 2.0.1与Tomcat 6.0.35和Tomcat 7.0.25。所有这些组合都会出现错误。

正如我在post中提到的,我们的代码中没有response.redirect或response.forward语句。这对我们的生产应用程序造成严重问题,因此需要帮助确定可以查看其他问题以找到问题的根源。

2 个答案:

答案 0 :(得分:1)

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

代码已更改,错误现已消失。吸取的教训是,每当发生此类错误时,扫描整个代码库以直接访问响应输出流并在现有控制器方法之前负责地关闭输出流。

答案 1 :(得分:0)

您应该创建一个新的grails应用程序并自己移动控制器,域等,而不是grails更新。

当你这样做时,也要确保你查看grails的配置文件。

另请查看您拥有的插件。

此外,在移动文件时,请在可能的情况下偶尔尝试一下应用程序,也许您可​​以检测错误何时出现。首先在最基本的控制器中尝试,然后查看是否存在错误。

祝你好运。