gpt4 book ai didi

GWT 非法参数异常 : encodedRequest cannot be empty

转载 作者:行者123 更新时间:2023-12-02 17:05:30 24 4
gpt4 key购买 nike

我正在使用gwt1.5、struts2、spring和hibernate。我收到以下错误:

ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/project name] - Exception while dispatching incoming RPC call java.lang.IllegalArgumentException: encodedRequest cannot be empty

此错误仅在 IE 中出现,但在 FireFox 中正常工作。

最佳答案

在过去的几个月里,我对此做了很多研究 - 在详细介绍之前,我的 Web 应用程序正在使用在 Tomcat 7 上运行的 GWT 2.x,以及 Apache httpd 2.2.x 和 mod_jk 1.2.x 设置在前面。

使用 mod_jk 版本 1.2.26,我偶尔会在日志中看到“encodedRequest 不能为空”错误。就像问题所说,这只会发生在 IE 中,对我来说只有 IE8/9。问题是我的服务器操作系统是 Linux,因此 NTLM 身份验证不可能是问题所在。在较新版本的 mod_jk(撰写本文时为 1.2.37)中,我会在 Tomcat 日志中收到套接字超时和读取错误。

每隔几秒向服务器轮询一次 Web 应用程序期间就会记录此错误,以便获取在单独线程中启动的长时间运行操作的状态。轮询每五秒进行一次,但偶尔会在执行此状态请求时挂起。

经过大量 tcpdump 命令后,我发现挂起的请求来自 Apache 重置的 TCP 连接; FIN/ACK 正在发送到浏览器,服务器将接收 POST 请求 header 和正文,并且服务器将继续重置连接。然后,奇怪的是,只有 header 会从浏览器返回到服务器。经过一番研究,我发现了这一点:

Why does Internet Explorer not send HTTP post body on Ajax call after failure?

显然,IE只会在重新发送POST请求期间发送 header 。按照真正的 Microsoft 风格,这个问题实际上已经存在一段时间了,已发布并安装了修补程序,但在客户端计算机上未启用。如果您不想强制所有用户编辑其注册表,则需要在服务器上禁用 HTTP Keep-Alive 或将 Keep-Alive 超时增加到 > 60 秒。对于我的 apache httpd 服务器,我将 KeepAliveTimeout 设置为 65,将 MaxKeepAliveRequests 设置为 0,以便服务器不会启动与浏览器的连接重置。

关于GWT 非法参数异常 : encodedRequest cannot be empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1210926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com