jquery ajax 请求导致 IllegalStateException : getOutputStream()

标签 jquery ajax spring jackson

我有一个 spring portlet mvc 应用程序。我有一个 jsp,它使用 Ajax 请求向资源 URL 发出 GET 请求,然后使用 Spring Jackson 映射器(MappingJacksonJsonView)类返回 json。 GET 请求非常慢,可能需要几秒钟才能执行。我注意到一个用例;

  1. 我点击应用程序中的 AJAX 提交链接
  2. 我在请求完成之前刷新页面
  3. 我重复上述步骤
  4. 我的服务器日志开始抛出非法状态异常

    原因:java.lang.IllegalStateException:已为此响应调用 getOutputStream() 在 org.apache.catalina.connector.Response.getWriter(Response.java:611) 在 org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198) 在 javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)

因为 Spring 负责创建和删除输出读取器和写入器,所以我无法捕获非法异常,所以我发现很难隔离发生确切问题的位置。

如有任何建议或帮助,我们将不胜感激。谢谢。

最佳答案

回答 - 发生了以下情况。我想我可以将其归结为一个影响较小的问题。

当浏览器打开 Socket 并发出 Ajax 请求时,就会发生这种情况,但在收到服务器的响应之前,它会终止打开的 Socket(通过关闭浏览器或移动到另一个页面)。同时,服务器正在处理请求并尝试将输出写回浏览器,但浏览器已关闭套接字并继续前进。

关于jquery ajax 请求导致 IllegalStateException : getOutputStream(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12475306/

相关文章:

javascript - 获取链接点击时标签元素的文本

java - 我可以使用什么来为在 tomcat 上运行的 java servlet 中的每个 session 实现后台进程?

javascript - 在 Ajax jQuery/Javascript 中使用参数

javascript - @Url.ACtion() 中不接受变量参数

javascript - 使用 jQuery 的 AJAX 调用中的 url 字段格式

jquery - 为什么这个简单的 jQuery 切换不起作用?

jquery - jquery解决了哪些浏览器不兼容问题?

javascript - 后退按钮过滤器不起作用

java - Spring Integration EnableIntegrationManagement 加上 MetricRegistry

java - 我如何从 org.springframework.jdbc.datasource.DriverManagerDataSource 类获取 jdbc 连接