Java-ს მოთხოვნა შეიძლება შეხვდეს პროქსის რამდენიმე წყაროს: კლიენტის მკაფიო კონფიგურაცია, ნაგულისხმევი სელექტორი, JVM-ის ქსელური თვისებები და ოპერაციული სისტემის მხარდაჭერილი პარამეტრები. როცა ჟურნალი მოულოდნელად იხსენიებს SOCKS-ს, დაადგინეთ, რომელმა წყარომ აირჩია იგი.

ნაგულისხმევ სელექტორს იყენებს კოდისთვის შეამოწმეთ გადაწყვეტილება ზუსტი დანიშნულებისთვის:

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

ეს აცნობებს სელექტორის კანდიდატებს. ის არ ამტკიცებს, რომელი კავშირი დასრულდა წარმატებით, და კლიენტს, რომელსაც საკუთარი მკაფიო მარშრუტი აქვს, შეიძლება სხვაგვარად აირჩიოს.

შეამოწმეთ მოქმედი პარამეტრები

გადახედეთ http.proxyHost, https.proxyHost, socksProxyHost, მათ პორტებს და java.net.useSystemProxies. JDK-ის ქსელური თვისებების დოკუმენტაცია აღწერს მათ ფარგლებსა და უპირატესობას. სისტემური პროქსის აღმოჩენა მოწმდება გაშვებისას; დააყენეთ იგი განზრახ JVM-ის გაშვებისას.

ისტორიული პასუხები აღწერენ Windows-ის ძველი დიალოგებისა და ძველი JDK-ების კონკრეტულ კომბინაციებს. ეს ცნობები შეიძლება ხსნიდეს გადაწყვეტის წარმომავლობას, მაგრამ არ ამტკიცებენ, რომ მიმდინარე გაშვების გარემოს იგივე შეცდომა აქვს. ჩაწერეთ გაშვების გარემოს ვერსია და სელექტორის გამოტანა, სანამ შეცვლით ოპერაციული სისტემის პარამეტრებს ყველა აპლიკაციისთვის.

თუ აპლიკაციას ერთი კლიენტისთვის HTTP პროქსი სჭირდება, მკაფიო პროქსი კონფიგურაცია შეიძლება უფრო ნათლად წარმოაჩენდეს ამ მოთხოვნას. თუ მას ცენტრალური ავტომატური მარშრუტიზაცია სჭირდება, გამოიკვლიეთ, რატომ მიიღო ან დააბრუნა სელექტორმა მოულოდნელი SOCKS ჩანაწერი.

მორგებულმა სელექტორმა უნდა შეინარჩუნოს განზრახ გვერდის ავლა და წარუმატებლობის დამუშავება. ყველა SOCKS კანდიდატის განურჩევლად გაფილტვრამ შეიძლება გაწყვიტოს კავშირები, რომლებსაც ერთი უნდა გამოეყენებინათ. შეასწორეთ არასწორი წესი ყველაზე მცირე ფარგლებით, რომელსაც შეძლებთ დაადგინოთ.

დაკავშირებული სტატიები