Једна нит постави својство проксија, упути захтев и врати стару вредност. Друга нит учини исто са другим проксијем. Код изгледа уредно када се чита одозго надоле, али обе нити мењају заједничко JVM стање.

System.setProperty() мења системско својство за процес. Не припаја руту нити која га је позвала. Истовремени захтев може видети вредност написану за туђи посао, а постојећи клијент можда је већ забележио сопствену конфигурацију.

Учините руту делом клијента

За Јавин 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 може бити прикладна када се очекује да је сваки укључени клијент следи. Поставите ту политику при покретању апликације и проверите које је библиотеке поштују.

Проблеми настају када се глобална својства користе као привремени прекидач за појединачне захтеве. На серверу позадински радници и позиви библиотека могу радити истовремено чак и ако ваша метода изгледа синхроно. Држите стање усмеравања уз клијента или конектор који поседује везу, како га други захтев не би могао променити на пола посла.

Повезани чланци