Kërkesat e njëkohshme Java mund të ndajnë cilësime të gabuara proxy
Mbani kërkesat e njëkohshme Java në rrugët e tyre të synuara pa ndryshuar cilësimet e përbashkëta të proxy-t në JVM.
Një thread vendos një veti proxy, bën një kërkesë dhe rikthen vlerën e vjetër. Një thread tjetër bën të njëjtën gjë me një proxy tjetër. Kodi duket i rregullt kur lexohet nga lart poshtë, por të dy thread-at po ndryshojnë gjendjen e përbashkët të JVM.
System.setProperty() ndryshon një veti të sistemit për procesin. Nuk i bashkëngjit një rrugë thread-it që e thirri. Një kërkesë e njëkohshme mund të shohë një vlerë të shkruar për punën e dikujt tjetër, dhe një klient ekzistues mund të ketë kapur tashmë konfigurimin e vet.
Bëjeni rrugën pjesë të klientit
Për klientin HTTP të Java-s, krijoni klientë me përzgjedhës proxy të qëllimshëm. Mbani klientë të veçantë kur ngarkesat e punës kërkojnë politika të ndryshme rrugëtimi:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("203.0.113.10", 8080)))
.connectTimeout(Duration.ofSeconds(5))
.build();
Importet janë java.net, java.net.http dhe java.time. Adresa është ilustruese; për testet e lejuara të rrugëve publike, lista e proxy-ve HTTP ofron pika fundore kandidate. Afatet e kërkesave dhe vërtetimi i proxy-t konfigurojini veçmas sipas nevojave të aplikacionit.
metoda proxy e ndërtuesit regjistron një zgjedhje në nivel klienti. Kjo e bën politikën më të lehtë për t'u inspektuar sesa një sekuencë shkrimesh globale të mbështjella rreth operacioneve asinkrone.
Cilësimet globale kanë ende përdorim
Një politikë e vetme proxy për të gjithë JVM mund të jetë e përshtatshme kur çdo klient pjesëmarrës synohet ta ndjekë atë. Vendoseni atë politikë në nisjen e aplikacionit dhe verifikoni cilat biblioteka e respektojnë.
Problemet lindin kur vetitë globale përdoren si ndërprerës i përkohshëm për kërkesa individuale. Në një server, punëtorët e sfondit dhe thirrjet e bibliotekave mund të ekzekutohen njëkohësisht edhe nëse metoda juaj duket sinkrone. Mbani gjendjen e rrugëtimit me klientin ose lidhësin që zotëron lidhjen, që një kërkesë tjetër të mos e ndryshojë në mes të punës.