Java-pyyntö voi kohdata useita välityspalvelimen lähteitä: asiakkaan eksplisiittinen kokoonpano, oletusvalitsin, JVM:n verkko-ominaisuudet ja tuetut käyttöjärjestelmäasetukset. Kun loki mainitsee SOCKSin odottamatta, selvitä, mikä lähde sen valitsi.

Jos koodi käyttää oletusvalitsinta, tarkista päätös tarkalle kohdeosoitteelle:

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

Tämä raportoi valitsimen ehdokkaat. Se ei todista, mikä yhteys lopulta onnistui, ja asiakas, jolla on oma eksplisiittinen reittinsä, voi tehdä toisen valinnan.

Tarkista tehokkaat asetukset

Käy läpi http.proxyHost, https.proxyHost, socksProxyHost, niiden portit ja java.net.useSystemProxies. JDK:n verkko-ominaisuuksien dokumentaatio kuvaa niiden laajuuden ja etusijan. Järjestelmän välityspalvelimen tunnistus tarkistetaan käynnistyksessä; aseta se tarkoituksella JVM:ää käynnistettäessä.

Historialliset vastaukset kuvaavat tiettyjä yhdistelmiä vanhoista Windows-valintaikkunoista ja vanhoista JDK:ista. Ne raportit voivat selittää ratkaisun alkuperän, mutta eivät todista, että nykyisessä ajonaikaisessa ympäristössä on sama virhe. Kirjaa ajonaikaisen ympäristön versio ja valitsimen tuloste ennen kuin muutat käyttöjärjestelmäasetuksia kaikille sovelluksille.

Jos sovellus tarvitsee HTTP-välityspalvelimen yhdelle asiakkaalle, eksplisiittinen välityspalvelinkokoonpano voi tehdä vaatimuksesta selkeämmän. Jos se tarvitsee keskitetyn automaattisen reitityksen, tutki, miksi valitsin vastaanotti tai palautti odottamattoman SOCKS-merkinnän.

Mukautetun valitsimen tulisi säilyttää tarkoitukselliset ohitukset ja virheiden käsittely. Kaikkien SOCKS-ehdokkaiden valikoimaton suodattaminen voi katkaista yhteyksiä, joiden piti käyttää yhtä. Korjaa virheellinen sääntö pienimmällä tunnistamallasi laajuudella.

Aiheeseen liittyvät artikkelit