Java zahtjev može naići na nekoliko proxy izvora: eksplicitnu konfiguraciju klijenta, podrazumijevani selektor, JVM mrežne osobine i podržane postavke operativnog sistema. Kada se u zapisu neočekivano spomene SOCKS, utvrdite koji je izvor to odabrao.

Za kod koji koristi podrazumijevani selektor, pregledajte odluku za tačno odredište:

URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
    System.out.println(selector.select(target));
}

Ovo prikazuje kandidate selektora. Ne dokazuje koja je veza na kraju uspjela, a klijent sa vlastitom eksplicitnom rutom može donijeti drugačiji izbor.

Provjerite efektivne postavke

Pregledajte http.proxyHost, https.proxyHost, socksProxyHost, njihove portove i java.net.useSystemProxies. JDK dokumentacija o mrežnim osobinama opisuje njihov obim i prioritet. Otkrivanje sistemskog proxyja provjerava se pri pokretanju; postavite ga namjerno pri pokretanju JVM-a.

Historijski odgovori opisuju određene kombinacije starih Windows dijaloga i starih JDK-ova. Ti izvještaji mogu objasniti porijeklo zaobilaznog rješenja, ali ne dokazuju da trenutno okruženje za izvršavanje ima istu grešku. Zabilježite verziju okruženja i izlaz selektora prije nego promijenite postavke operativnog sistema za svaku aplikaciju.

Ako aplikaciji treba HTTP proxy za jedan klijent, eksplicitna konfiguracija proxyja može taj zahtjev učiniti jasnijim. Ako joj treba centralno automatsko usmjeravanje, istražite zašto je selektor primio ili vratio neočekivani SOCKS unos.

Prilagođeni selektor treba sačuvati namjerne zaobilaske i obradu otkaza. Filtriranje svakog SOCKS kandidata bez razlike može prekinuti veze koje su trebale koristiti jedan od njih. Ispravite pogrešno pravilo u najmanjem obimu koji možete utvrditi.

Povezani članci