Flash 禁用每个请求的分块

Flash 禁用每个请求的分块,flash,web-services,servlets,glassfish,chunked-encoding,Flash,Web Services,Servlets,Glassfish,Chunked Encoding,我有一个由Javaservlet支持的web服务。该服务由较旧版本的Flash使用。我们痛苦地发现,在这个版本的Flash中,URLLoader无法处理分块响应。从未从服务器接收到任何分块响应 我正在使用Glassfish来托管Servlet。我知道如何禁用整个服务器的分块,但这似乎是个坏主意(是吗?) 是否有标准的方法来禁用每个请求的分块?我尝试调用ServletResponse.setBufferSize(一些较大的值),但令人惊讶的是,这并没有影响服务器使用分块的决定。来自HttpServ

我有一个由Javaservlet支持的web服务。该服务由较旧版本的Flash使用。我们痛苦地发现,在这个版本的Flash中,
URLLoader
无法处理分块响应。从未从服务器接收到任何分块响应

我正在使用Glassfish来托管Servlet。我知道如何禁用整个服务器的分块,但这似乎是个坏主意(是吗?)

是否有标准的方法来禁用每个请求的分块?我尝试调用
ServletResponse.setBufferSize(一些较大的值)
,但令人惊讶的是,这并没有影响服务器使用分块的决定。

来自
HttpServlet的

如果可能,设置
Content-Length
标题(使用
ServletResponse.setContentLength(int)
方法),以允许servlet容器使用持久连接将其响应返回给客户端,从而提高性能。如果整个响应适合响应缓冲区,则会自动设置内容长度

使用HTTP 1.1分块编码(这意味着响应具有
传输编码
头)时,不要设置
内容长度

因此,如果您事先设置了响应内容长度,那么它就不会以分块编码的方式发送

response.setContentLength(contentLength);
// ...

更新:您还需要确保servlet没有依次被
RequestDispatcher\include()
调用。另见:

ServletResponse
对象的path元素和参数与调用方的保持不变。包含的servlet无法更改响应状态代码或设置标题;任何更改的尝试都将被忽略


这是有道理的,但对玻璃鱼不起作用。即使设置了内容长度,服务器仍然会分块。Glassfish版本是什么?您确定在写入任何内容之前设置了标题吗?你看到客户端的标题了吗?您确定没有在资源中设置由
RequestDispatcher\include()
调用的标头(即完全忽略该标头,另请参见)。GF 3.1;标题没有显示,我仍然看到“chunked”;不,在设置标题之前,我没有写任何内容。我敢打赌,在请求-响应链中有一个虚假的
HttpServletResponseWrapper
实现阻止了这一点。在
setContentLength()
上放置一个断点,并从该断点开始跟踪。该断点可能重复