Ένα νήμα ορίζει μια ιδιότητα proxy, κάνει μια αίτηση και επαναφέρει την παλιά τιμή. Ένα άλλο νήμα κάνει το ίδιο με διαφορετικό proxy. Ο κώδικας φαίνεται τακτοποιημένος όταν διαβάζεται από πάνω προς τα κάτω, αλλά και τα δύο νήματα αλλάζουν κοινή κατάσταση της JVM.

Το System.setProperty() αλλάζει μια ιδιότητα συστήματος για τη διεργασία. Δεν συνδέει μια διαδρομή με το νήμα που το κάλεσε. Μια ταυτόχρονη αίτηση μπορεί να δει μια τιμή γραμμένη για τη δουλειά κάποιου άλλου, και ένας υπάρχων πελάτης μπορεί να έχει ήδη καταγράψει τη δική του διαμόρφωση.

Κάντε τη διαδρομή μέρος του πελάτη

Για τον πελάτη HTTP της Java, δημιουργήστε πελάτες με σκόπιμους επιλογείς proxy. Κρατήστε ξεχωριστούς πελάτες όταν τα φορτία εργασίας απαιτούν διαφορετικές πολιτικές δρομολόγησης:

HttpClient client = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("203.0.113.10", 8080)))
    .connectTimeout(Duration.ofSeconds(5))
    .build();

Οι εισαγωγές είναι java.net, java.net.http και java.time. Η διεύθυνση είναι ενδεικτική· για επιτρεπόμενες δοκιμές δημόσιων διαδρομών, η λίστα proxy HTTP παρέχει υποψήφια τελικά σημεία. Ρυθμίστε τις προθεσμίες αιτημάτων και την ταυτοποίηση proxy ξεχωριστά για τις ανάγκες της εφαρμογής.

Η μέθοδος proxy του builder καταγράφει μια επιλογή σε επίπεδο πελάτη. Αυτό κάνει την πολιτική ευκολότερη στην επιθεώρηση από μια ακολουθία καθολικών εγγραφών που περιβάλλουν ασύγχρονες λειτουργίες.

Οι καθολικές ρυθμίσεις έχουν ακόμη χρήση

Μια ενιαία πολιτική proxy για όλη την JVM μπορεί να είναι κατάλληλη όταν όλοι οι συμμετέχοντες πελάτες πρέπει να την ακολουθούν. Ορίστε την κατά την εκκίνηση της εφαρμογής και επαληθεύστε ποιες βιβλιοθήκες τη σέβονται.

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

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