Gall ceisiadau Java cyfamserol rannu gosodiadau proxy anghywir
Cadwch geisiadau Java cyfamserol ar eu llwybrau bwriadedig heb newid gosodiadau proxy a rennir yn y JVM.
Mae un edefyn yn gosod priodwedd proxy, yn gwneud cais, ac yn adfer yr hen werth. Mae edefyn arall yn gwneud yr un peth â phroxy gwahanol. Mae'r cod yn edrych yn daclus wrth ei ddarllen o'r top i'r gwaelod, ond mae'r ddau edefyn yn newid cyflwr a rennir yn y JVM.
System.setProperty() yn newid priodwedd system ar gyfer y broses. Nid yw'n atodi llwybr i'r edefyn a'i galwodd. Gall cais cyfamserol weld gwerth a ysgrifennwyd ar gyfer gwaith rhywun arall, ac efallai bod cleient presennol eisoes wedi dal ei ffurfweddiad ei hun.
Gwnewch y llwybr yn rhan o'r cleient
Ar gyfer cleient HTTP Java, crëwch gleientiaid â dewiswyr proxy bwriadol. Cadwch gleientiaid ar wahân pan fo llwythi gwaith angen polisïau llwybro gwahanol:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("203.0.113.10", 8080)))
.connectTimeout(Duration.ofSeconds(5))
.build();
Y mewnforion yw java.net, java.net.http a java.time. Mae'r cyfeiriad yn ddarluniadol; ar gyfer profion llwybrau cyhoeddus a ganiateir, mae'r rhestr proxy HTTP yn darparu penawdau ymgeisiol. Ffurfweddwch derfynau amser ceisiadau a dilysu proxy ar wahân yn ôl anghenion y cymhwysiad.
Mae dull proxy'r adeiladydd yn cofnodi dewis ar lefel cleient. Mae hynny'n gwneud y polisi'n haws i'w archwilio na dilyniant o ysgrifeniadau byd-eang wedi'u lapio o amgylch gweithrediadau asyncronaidd.
Mae gan osodiadau byd-eang ddefnydd o hyd
Gall un polisi proxy ar draws y JVM fod yn briodol pan fwriedir i bob cleient sy'n cymryd rhan ei ddilyn. Gosodwch y polisi hwnnw wrth gychwyn y cymhwysiad a gwiriwch pa lyfrgelloedd sy'n ei barchu.
Mae problemau'n codi pan ddefnyddir priodweddau byd-eang fel switsh dros dro ar gyfer ceisiadau unigol. Mewn gweinydd, gall gweithwyr cefndir a galwadau llyfrgell redeg ar yr un pryd hyd yn oed os yw'ch dull chi'n ymddangos yn gydamserol. Cadwch gyflwr llwybro gyda'r cleient neu'r cysylltydd sy'n berchen ar y cysylltiad, fel na all cais arall ei newid hanner ffordd drwy'r gwaith.