Μια μεταφόρτωση που επαναλαμβάνεται μετά από πρόκληση του διακομιστή μεσολάβησης χρειάζεται ξανά το σώμα της. Για τον σύνδεσμο 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. Το μη αποθηκευμένο σώμα ροής του δεν είναι επαναλήψιμο. Η προσωρινή αποθήκευση δίνει στη ροή ελέγχου ταυτότητας byte που μπορεί να ξαναστείλει αντί να ξαναδιαβάσει έναν αναλωμένο παραγωγό.

Δεν εγγυάται ότι ο έλεγχος ταυτότητας τελειώνει μετά από μία 407. Ορισμένα σχήματα απαιτούν νόμιμα πολλές ανταλλαγές, οπότε εξετάστε ολόκληρη τη διαπραγμάτευση πριν θεωρήσετε μια ακόμη πρόκληση χαμένη κατάσταση.

Κρατήστε το μέγεθος του σώματος εντός του προϋπολογισμού μνήμης. Μια μεγάλη μεταφόρτωση ροής χρειάζεται στρατηγική επανάληψης κατάλληλη για αυτό το φορτίο· η ενεργοποίηση προσωρινής αποθήκευσης για κάθε αίτημα μπορεί να ανταλλάξει μια αποτυχία διαπραγμάτευσης με εξάντληση μνήμης.

Σχετικά άρθρα