2014-07-03 42 views
0

我有一堆web服务返回一些内容,有时> 100kb。 不幸的是,对于更大的结果,我得到了Transfer-encoding的部分响应:分块。Spring MVC XML结果分块,缺少内容长度标头

有什么办法可以禁用分块?

这是我的方法:

@RequestMapping(value = "/form/{repository}/{objectId}", method = RequestMethod.GET, headers="()") 
@ResponseBody 
public FormHelper getFormConfig(HttpServletRequest req, HttpServletResponse resp, @PathVariable String repository, 
     @PathVariable("objectId") String objectId) throws Exception 

这就是Spring的XML配置:

<import resource="classpath*:context-aaa.xml" /> 

<mvc:annotation-driven /> 

<bean 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="useDefaultSuffixPattern" value="false" /> 
</bean> 

我有泽西库同样的问题,所以我改写了该项目到Spring MVC,但它仍然存在...

在此先感谢您的帮助。 马里乌什

+0

看起来像JSON结果包含内容长度属性和结果没有分块。 XML返回分块,因此我报告了一个bug:https://jira.spring.io/browse/SPR-11948 –

+0

这可能有所帮助:http://stackoverflow.com/questions/6299432/how-do-disable-transfer -encoding-in-tomcat-6 – CodeChimp

+0

这个答案指出Content-length头是禁用分块传输的唯一选项。我已经知道,不幸的是,春天我无法控制这样的标题,所以我向Spring团队报告了这个问题。 –

回答

3

我能够通过添加以下过滤器,以使这项工作:

<filter> 
    <filter-name>bufferFilter</filter-name> 
    <filter-class>org.springframework.web.filter.ShallowEtagHeaderFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>bufferFilter</filter-name> 
    <url-pattern>/services/*</url-pattern> 
</filter-mapping> 

https://jira.spring.io/browse/SPR-11948

相关问题