Eyni vaxtlı Java sorğuları səhv proksi parametrlərini paylaşa bilər
Eyni vaxtlı Java sorğularını paylaşılan JVM proksi parametrlərini dəyişmədən nəzərdə tutulan marşrutlarında saxlayın.
Bir sap proksi xassəsini təyin edir, sorğu göndərir və köhnə dəyəri bərpa edir. Başqa bir sap fərqli proksi ilə eyni şeyi edir. Kod yuxarıdan aşağıya oxunduqda səliqəli görünür, amma hər iki sap paylaşılan JVM vəziyyətini dəyişir.
System.setProperty() proses üçün sistem xassəsini dəyişir. Onu çağıran sapa marşrut bağlamır. Eyni vaxtlı sorğu başqasının işi üçün yazılmış dəyəri görə bilər və mövcud müştəri artıq öz konfiqurasiyasını tutmuş ola bilər.
Marşrutu müştərinin bir hissəsi edin
Java-nın HTTP müştərisi üçün müştəriləri qəsdən seçilmiş proksi seçiciləri ilə yaradın. İş yükləri fərqli marşrutlaşdırma siyasətləri tələb etdikdə ayrı müştərilər saxlayın:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("203.0.113.10", 8080)))
.connectTimeout(Duration.ofSeconds(5))
.build();
İdxallar java.net, java.net.http, və java.time-dir. Ünvan nümunəvidir; icazə verilən ictimai marşrut sınaqları üçün HTTP proksi siyahısı namizəd son nöqtələr təqdim edir. Sorğu müddətlərini və proksi autentifikasiyasını tətbiqin ehtiyaclarına uyğun ayrıca konfiqurasiya edin.
Qurucunun proksi metodu müştəri səviyyəsində seçim qeyd edir. Bu, siyasəti asinxron əməliyyatların ətrafına sarılmış ardıcıl qlobal yazılardan daha asan yoxlamağa imkan verir.
Qlobal parametrlərin hələ də faydası var
Hər iştirakçı müştərinin ona əməl etməsi nəzərdə tutulduqda tək bir JVM miqyaslı proksi siyasəti uyğun ola bilər. Bu siyasəti tətbiqin başlanğıcında təyin edin və hansı kitabxanaların ona riayət etdiyini yoxlayın.
Qlobal xassələr fərdi sorğular üçün müvəqqəti açar kimi istifadə edildikdə problemlər yaranır. Serverdə fon işçiləri və kitabxana çağırışları, öz metodunuz sinxron görünsə belə, eyni vaxtda işləyə bilər. Marşrut vəziyyətini bağlantıya sahib olan müştəri və ya konnektorda saxlayın ki, başqa sorğu işin ortasında onu dəyişə bilməsin.