Đệm một lần tải lên Jersey 2 cho các lần thử xác thực qua proxy
Làm cho thực thể yêu cầu Jersey 2 với trình kết nối Apache có thể lặp lại khi quá trình thương lượng xác thực cần gửi lại lần tải lên.
Một lần tải lên được thử lại sau thách thức từ proxy lại cần phần thân của nó. Với trình kết nối Apache của Jersey 2, hãy chọn xử lý thực thể có đệm trong cấu hình dùng để tạo máy khách đó:
ClientConfig config = new ClientConfig();
config.connectorProvider(new ApacheConnectorProvider());
config.property(ClientProperties.PROXY_URI,
"http://proxy.example.net:8080");
config.property(ClientProperties.REQUEST_ENTITY_PROCESSING,
RequestEntityProcessing.BUFFERED);Thực hiện tải lên qua máy khách thu được. Các kiểu này đến từ gói Jersey client và Apache-connector; đặt một cấu hình không dùng sẽ không ảnh hưởng đến yêu cầu.
Trình kết nối bọc thực thể có đệm trong BufferedHttpEntity của Apache. Thực thể truyền luồng không đệm của nó không thể lặp lại. Việc đệm cung cấp cho luồng xác thực các byte mà nó có thể gửi lại thay vì đọc lại một nhà sản xuất đã dùng hết.
Điều này không bảo đảm quá trình xác thực kết thúc sau một 407. Một số cơ chế hợp pháp cần vài lần trao đổi, nên hãy xem xét toàn bộ thương lượng trước khi coi một thách thức khác là trạng thái đã mất.
Giữ kích thước phần thân trong ngân sách bộ nhớ. Một lần tải lên luồng lớn cần chiến lược phát lại phù hợp với khối lượng đó; bật đệm cho mọi yêu cầu có thể đánh đổi thất bại thương lượng lấy cạn kiệt bộ nhớ.