java - 已为此响应调用 Tomcat、Comet 和 getOutputStream()

标签 java tomcat comet outputstream

我正在使用 Tomcat 6.0.32 和 Http11NioProtocol 连接器来实​​现长轮询。

我的 Comet 处理器将 HttpSevletResponse 保存在队列中,直到事件准备好发回。当它发回事件时,它正在将二进制流写入小程序,因此我使用 response.getOutputStream().write() 发回数据。当写入流时,它是同步的。

当第二个框架中的另一个网页重新加载时(从同一容器中的 SpringController 生成的独立 JSP)偶尔我会在日志中看到这一点并且页面加载失败。

当同时请求两者时,comet 处理器和常规 servlet 生成的响应之间是否可能存在并发错误?

堆栈跟踪:

java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:611)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:180)
at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
at org.apache.jsp.WEB_002dINF.jsp.sale_jsp._jspService(sale_jsp.java:96)

最佳答案

正如您在堆栈跟踪中看到的那样,JSP 调用了 response.getWriter(),但异常消息表明调用了 response.getOutputStream()前。您不能在同一个响应对象上调用这两种方法。

这就是问题所在,我不知道如何在您的特定上下文中解决它..

关于java - 已为此响应调用 Tomcat、Comet 和 getOutputStream(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5353866/

相关文章:

asp.net-mvc - .Net 中 LongPolling 的可扩展性 :Grand Finale

java - 如何在应用程序的生命周期中保持绑定(bind)服务运行?

java - GSON - 日期格式

java - 将 java 应用程序部署到 weblogic 时出错

java - 如何从服务器端代码(JSP 或 Servlet)读取客户端本地磁盘上的文件

php - 在 COMET 中将数组传递给 Javascript

ajax - 如何扩展 socket.io?

java反射访问私有(private)字段抛出NoSuchFieldException即使该字段存在

session - 即使不存在 cookie,Tomcat 6 也会恢复 session

iis - ColdFusion 9 在 Tomcat 7 上的 ODBC 套接字数据源问题