O cerere Java poate întâlni mai multe surse de proxy: configurația explicită a clientului, selectorul implicit, proprietățile de rețea ale JVM și setările acceptate ale sistemului de operare. Când un jurnal menționează neașteptat SOCKS, identifică ce sursă l-a ales.

Pentru codul care folosește selectorul implicit, inspectează decizia pentru destinația exactă:

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

Aceasta raportează candidații selectorului. Nu dovedește care conexiune a reușit în final, iar un client cu propria rută explicită poate face o alegere diferită.

Verifică setările efective

Revizuiește http.proxyHost, https.proxyHost, socksProxyHost, porturile lor și java.net.useSystemProxies. Documentația proprietăților de rețea JDK descrie domeniul și precedența acestora. Descoperirea proxy-ului de sistem este verificată la pornire; seteaz-o deliberat când pornești JVM-ul.

Răspunsurile istorice descriu combinații specifice de dialoguri vechi Windows și JDK-uri vechi. Acele rapoarte pot explica originea unei soluții, dar nu stabilesc că un runtime actual are același defect. Înregistrează versiunea runtime-ului și ieșirea selectorului înainte de a modifica setările sistemului de operare pentru toate aplicațiile.

Dacă aplicația are nevoie de un proxy HTTP pentru un singur client, o configurație explicită de proxy poate face cerința mai clară. Dacă are nevoie de rutare automată centrală, investighează de ce selectorul a primit sau a returnat intrarea SOCKS neașteptată.

Un selector personalizat ar trebui să păstreze ocolirile intenționate și gestionarea eșecurilor. Filtrarea tuturor candidaților SOCKS fără discriminare poate întrerupe conexiuni care ar fi trebuit să folosească unul. Corectează regula incorectă cu cel mai mic domeniu pe care îl poți identifica.

Articole similare