Մեկ թել սահմանում է պրոքսի հատկություն, կատարում հարցում և վերականգնում հին արժեքը։ Մեկ այլ թել նույնն է անում այլ պրոքսիով։ Կոդը վերևից ներքև կարդալիս կոկիկ է թվում, բայց երկու թելերն էլ փոխում են JVM-ի ընդհանուր վիճակը։

System.setProperty() փոխում է գործընթացի համակարգային հատկությունը։ Այն երթուղի չի կցում այն կանչած թելին։ Զուգահեռ հարցումը կարող է տեսնել ուրիշի աշխատանքի համար գրված արժեք, և գոյություն ունեցող հաճախորդը կարող է արդեն իսկ գրաված լինել իր սեփական կոնֆիգուրացիան։

Երթուղին դարձրեք հաճախորդի մաս

Java-ի HTTP հաճախորդի համար ստեղծեք հաճախորդներ դիտավորյալ պրոքսի ընտրիչներով։ Երբ աշխատանքային բեռները պահանջում են տարբեր երթուղավորման քաղաքականություն, պահեք առանձին հաճախորդներ՝

HttpClient client = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("203.0.113.10", 8080)))
    .connectTimeout(Duration.ofSeconds(5))
    .build();

Ներմուծումներն են java.net, java.net.http և java.time։ Հասցեն օրինակելի է. թույլատրված հանրային երթուղիների թեստերի համար HTTP պրոքսիների ցանկը տրամադրում է թեկնածու վերջնակետեր։ Կարգավորեք հարցումների ժամկետները և պրոքսի նույնականացումը առանձին՝ ըստ հավելվածի կարիքների։

Կառուցողի proxy մեթոդը գրանցում է ընտրություն հաճախորդի մակարդակում։ Դա քաղաքականությունը դարձնում է ավելի հեշտ ստուգելի, քան ասինխրոն գործողությունների շուրջ փաթաթված գլոբալ գրառումների հաջորդականությունը։

Գլոբալ կարգավորումները դեռ օգտակար են

Մեկ ամբողջ JVM-ի պրոքսի քաղաքականությունը կարող է տեղին լինել, երբ բոլոր մասնակից հաճախորդները պետք է հետևեն դրան։ Սահմանեք այն հավելվածի մեկնարկին և ստուգեք, թե որ գրադարաններն են հարգում այն։

Խնդիրներ են առաջանում, երբ գլոբալ հատկությունները օգտագործվում են որպես առանձին հարցումների ժամանակավոր անջատիչ։ Սերվերում ֆոնային աշխատողները և գրադարանային կանչերը կարող են գործել զուգահեռ, նույնիսկ եթե ձեր սեփական մեթոդը սինխրոն է թվում։ Երթուղավորման վիճակը պահեք այն հաճախորդի կամ միակցիչի մոտ, որը տիրապետում է կապին, որպեսզի մեկ այլ հարցում չկարողանա փոխել այն աշխատանքի կեսին։

Առնչվող հոդվածներ