Un fío establece unha propiedade de proxy, fai unha solicitude e restaura o valor anterior. Outro fío fai o mesmo cun proxy diferente. O código parece ordenado ao lelo de arriba abaixo, pero ambos os fíos están cambiando estado compartido da JVM.

System.setProperty() cambia unha propiedade do sistema para o proceso. Non achega unha ruta ao fío que o chamou. Unha solicitude simultánea pode observar un valor escrito para o traballo doutra persoa, e un cliente existente pode ter capturado xa a súa propia configuración.

Faga que a ruta forme parte do cliente

Para o cliente HTTP de Java, cree clientes con selectores de proxy deliberados. Manteña clientes separados cando as cargas de traballo requiren políticas de encamiñamento distintas:

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

As importacións son java.net, java.net.http e java.time. O enderezo é ilustrativo; para probas permitidas de rutas públicas, a lista de proxies HTTP fornece puntos finais candidatos. Configure os prazos das solicitudes e a autenticación do proxy por separado segundo as necesidades da aplicación.

O método proxy do construtor rexistra unha elección a nivel de cliente. Iso fai que a política sexa máis doada de inspeccionar que unha secuencia de escrituras globais envoltas arredor de operacións asíncronas.

Os axustes globais aínda teñen utilidade

Unha única política de proxy para toda a JVM pode ser axeitada cando todos os clientes participantes deben seguila. Estableza esa política ao iniciar a aplicación e verifique que bibliotecas a respectan.

Os problemas xorden cando as propiedades globais se usan como un interruptor temporal para solicitudes individuais. Nun servidor, os traballadores en segundo plano e as chamadas de biblioteca poden executarse simultaneamente aínda que o seu propio método pareza síncrono. Manteña o estado de encamiñamento co cliente ou conector que posúe a conexión, para que outra solicitude non poida cambialo a metade do traballo.

Artigos relacionados