წესი http://reports.example:80/-ს პროქსის გავლით აგზავნის, მაგრამ http://reports.example/-ს პირდაპირ გადის. ეს URL-ები ერთსა და იმავე ჩვეულებრივ HTTP საბოლოო წერტილს აღწერენ. შეუსაბამობა ჩვეულებრივ გამოწვეულია გაანალიზებული პორტების პირდაპირი შედარებით.

URI.getPort() აბრუნებს -1-ს, როცა URI-ში პორტი არ ჩანს. ის არ ცვლის სქემის ნაგულისხმევ მნიშვნელობას. მარშრუტიზაციის პოლიტიკა, რომელიც მნიშვნელობას 80-ს ადარებს, მეორე URL-ს გამოტოვებს.

String scheme = uri.getScheme();
int port = uri.getPort();
if (port == -1) {
    if ("http".equalsIgnoreCase(scheme)) port = 80;
    else if ("https".equalsIgnoreCase(scheme)) port = 443;
}

გამოიყენეთ იგივე ნორმალიზაცია შედარების ორივე მხარეს. მხოლოდ მოთხოვნის URI-ის გასწორება გამოტოვებული პორტის მქონე კონფიგურირებულ დანიშნულებას მაინც შეუსაბამოდ ტოვებს. შეადარეთ ჰოსტი, ეფექტური პორტი და განზრახული სქემა; უარყავით არასწორი ან ჰოსტის გარეშე დანიშნულებები განსაზღვრული შეცდომის გზით.

ნუ გადააქცევთ ყოველ callback-ს HTTP გადაწყვეტილებად

ნაგულისხმევ შემრჩევს შეიძლება ჰკითხოთ ნედლი socket-ის კავშირებისთვისაც, socket სქემით. მხოლოდ ჰოსტისა და პორტის დამთხვევამ არ უნდა გამოიწვიოს იმ callback-ის მიერ URL მოთხოვნებისთვის განკუთვნილი HTTP პროქსის დაბრუნება. გადასცეთ მხარდაუჭერელი სქემები წინა შემრჩევს, შეინარჩუნეთ მისი შესაბამისი ქცევა.

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

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

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