Буферизація завантаження в Jersey 2 для повторних спроб автентифікації через проксі
Зробіть тіло запиту Jersey 2 з конектором Apache повторюваним, коли узгодження автентифікації має надіслати завантаження ще раз.
Завантаження, яке повторюють після виклику проксі, знову потребує свого тіла. Для конектора Apache у Jersey 2 виберіть обробку буферизованого тіла в конфігурації, з якої будується цей клієнт:
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);Виконайте завантаження через отриманий клієнт. Ці типи походять із пакетів Jersey client і Apache-connector; налаштування невикористовуваної конфігурації не вплинуло б на запит.
Конектор загортає буферизоване тіло в BufferedHttpEntity від Apache. Його небуферизоване потокове тіло не повторюється. Буферизація дає потоку автентифікації байти, які він може надіслати знову, замість повторного читання використаного джерела.
Це не гарантує, що автентифікація завершиться після одного 407. Деякі схеми законно вимагають кількох обмінів, тож перегляньте все узгодження, перш ніж вважати черговий виклик втраченим станом.
Тримайте розмір тіла в межах бюджету пам'яті. Велике потокове завантаження потребує стратегії повторного надсилання, придатної для такого навантаження; увімкнення буферизації для кожного запиту може обміняти збій узгодження на вичерпання пам'яті.