Eşzamanlı Java istekleri yanlış proxy ayarlarını paylaşabilir
Eşzamanlı Java isteklerini paylaşılan JVM proxy ayarlarını değiştirmeden amaçlanan rotalarında tutun.
Bir iş parçacığı bir proxy özelliği ayarlar, istek yapar ve eski değeri geri yükler. Başka bir iş parçacığı farklı bir proxy ile aynısını yapar. Kod yukarıdan aşağıya okunduğunda düzenli görünür, ancak her iki iş parçacığı da paylaşılan JVM durumunu değiştirir.
System.setProperty(), süreç için bir sistem özelliğini değiştirir. Rotayı onu çağıran iş parçacığına bağlamaz. Eşzamanlı bir istek başkasının işi için yazılmış bir değeri görebilir ve mevcut bir istemci kendi yapılandırmasını çoktan yakalamış olabilir.
Rotayı istemcinin parçası yapın
Java'nın HTTP istemcisi için bilinçli proxy seçicileri olan istemciler oluşturun. İş yükleri farklı yönlendirme ilkeleri gerektirdiğinde istemcileri ayrı tutun:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("203.0.113.10", 8080)))
.connectTimeout(Duration.ofSeconds(5))
.build();
İçe aktarımlar java.net, java.net.http ve java.time. Adres örnektir; izin verilen genel rota testleri için HTTP proxy listesi aday uç noktalar sunar. İstek son tarihlerini ve proxy kimlik doğrulamasını uygulamanın ihtiyaçlarına göre ayrı ayrı yapılandırın.
oluşturucunun proxy yöntemi istemci düzeyinde bir seçim kaydeder. Bu, ilkeyi eşzamansız işlemlerin etrafına sarılmış bir dizi genel yazmadan daha kolay denetlenebilir kılar.
Genel ayarların hâlâ bir kullanımı var
Katılan her istemcinin ona uyması amaçlandığında, tüm JVM için tek bir proxy ilkesi uygun olabilir. Bu ilkeyi uygulama başlangıcında ayarlayın ve hangi kitaplıkların ona uyduğunu doğrulayın.
Sorunlar, genel özellikler tek tek istekler için geçici bir anahtar olarak kullanıldığında ortaya çıkar. Bir sunucuda, kendi yönteminiz eşzamanlı görünse bile arka plan çalışanları ve kitaplık çağrıları eşzamanlı çalışabilir. Yönlendirme durumunu bağlantıya sahip olan istemci veya bağlayıcıda tutun, böylece başka bir istek onu işin ortasında değiştiremez.