可能的原因是什么"在提交响应后无法转发" ToolTwist应用中的错误

时间:2012-10-18 07:42:27

标签: tooltwist

我在生产中运行ToolTwist应用程序时遇到这些错误。这似乎发生了。可能导致这些堆栈跟踪的可能代码错误是什么?

2012-02-13 11:00:04,242 ERROR ServletUiModule - Error in Servlet tooltwist.ecommerce.RoutingUIM.doPost():
java.lang.IllegalStateException: Cannot forward after response has been committed
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:312)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)

1 个答案:

答案 0 :(得分:1)

答案A HttpServlet有两种用于获取输出流的变体 - response.getWriter()和response.getOutputStream()。在我们的例子中,我们使用uh.getResponse()来获取响应对象。

一些规则 -

1.可以使用其中一种方法。

2.所选方法不能被调用两次。

3.一旦有了输出对象,无论你是否有作家或输出流,一旦你关闭它,就不能再使用它了,也不能再使用它。

简而言之,编写servlet输出是一次性操作。你从servlet那里得到了你写的对象。

答案B
我似乎记得可能还有一种情况是您正在写入输出,但随后错误处理程序开始处理异常,并且错误页面在创建进一步输出时出现问题。用于处理错误的任何页面都必须具有errorpage标记(我不记得该标记)。

答案C
一旦你向servlet的输出写了一些内容,就不能在没有出现这个错误的情况下转发到另一个页面。