2010-09-14 19 views
11

Tôi đang sử dụng Spring 3 và mỗi lần tôi gửi một hình thức HTML để một bộ điều khiển mùa xuân tôi nhận được thông báo này, mà tôi không hiểu:Ý nghĩa và giải pháp cho thông báo lỗi mùa xuân 3? "Sử dụng getResponseBodyAsStream thay vì được khuyến khích"

org.apache.commons.httpclient.HttpMethodBase getResponseBody 
WARNING: Going to buffer response body of large or unknown size. 
Using getResponseBodyAsStream instead is recommended. 

Có một cấu hình thay đổi tôi có thể thực hiện trong mùa xuân để tránh điều này?

Trả lời

14

Điều này xảy ra với API commons-httpclient khi phương thức getResponseBody() được sử dụng. Cảnh báo có nghĩa là một cơ thể đáp ứng có khả năng rất lớn (chẳng hạn như tải xuống tệp lớn, v.v.) và tải toàn bộ nội dung vào bộ nhớ cùng một lúc vì một Chuỗi có thể rất kém hiệu quả. Cách để tránh sự kém hiệu quả tiềm năng này là sử dụng getResponseBodyAsStream(), điều này sẽ cho phép đệm và phát trực tuyến đúng đắn của thân phản hồi.

Tôi không chắc chắn lý do Spring sử dụng getResponseBody(). Nó có thể là khách hàng HTTP của bạn? Bạn có đang sử dụng ứng dụng khách HTTP được tùy chỉnh để thực hiện yêu cầu không?

+1

Tôi không chắc chắn ý của bạn là "khách hàng HTTP được tùy chỉnh bằng văn bản". Tôi đang sử dụng Spring/Jetty ở phía máy chủ và Firefox ở phía máy khách. – Linc

+0

Tôi nghĩ bạn có thể đang sử dụng ứng dụng khách HTTP của riêng bạn trong một thử nghiệm đơn vị, chẳng hạn. Vì bạn đang sử dụng Firefox, cảnh báo có thể được kích hoạt bởi việc sử dụng getResponseBody() của Spring. Nếu là vậy, tôi sẽ không lo lắng quá nhiều về nó. Bạn có thể thay đổi cấu hình log4j của bạn để ngăn chặn cảnh báo nếu nó làm phiền bạn, nhưng nó không có khả năng gây ra cảnh báo. – earldouglas

1

Bạn có thể thêm cấu hình http.method.response.buffer.warnlimit=1024*1024*10 vào ứng dụng.properties. nó làm việc cho tôi.

Các vấn đề liên quan