بیک وقت Java درخواستیں غلط proxy ترتیبات شیئر کر سکتی ہیں
مشترکہ JVM proxy ترتیبات بدلے بغیر بیک وقت Java درخواستوں کو ان کے مطلوبہ راستوں پر رکھیں۔
ایک thread proxy خاصیت مقرر کرتا ہے، درخواست بھیجتا ہے اور پرانی قدر بحال کرتا ہے۔ دوسرا thread مختلف proxy کے ساتھ یہی کرتا ہے۔ اوپر سے نیچے پڑھنے پر کوڈ صاف لگتا ہے، لیکن دونوں thread مشترکہ JVM حالت بدل رہے ہیں۔
System.setProperty() عمل کے لیے نظام کی خاصیت بدلتا ہے۔ یہ راستہ اس thread سے منسلک نہیں کرتا جس نے اسے بلایا۔ بیک وقت درخواست کسی اور کے کام کے لیے لکھی گئی قدر دیکھ سکتی ہے، اور موجودہ client اپنی ترتیب پہلے ہی محفوظ کر چکا ہو سکتا ہے۔
راستے کو client کا حصہ بنائیں
Java کے HTTP client کے لیے دانستہ proxy منتخب کنندگان کے ساتھ client بنائیں۔ جب کام کے بوجھ مختلف روٹنگ پالیسیاں چاہیں تو client الگ رکھیں:
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 فہرست امیدوار اینڈ پوائنٹس فراہم کرتی ہے۔ درخواست کی آخری تاریخیں اور proxy توثیق ایپلیکیشن کی ضروریات کے مطابق الگ ترتیب دیں۔
builder کا proxy طریقہ client سطح کا انتخاب ریکارڈ کرتا ہے۔ یہ پالیسی کو غیر ہم وقتی کارروائیوں کے گرد لپٹی عالمی تحریروں کی ترتیب سے زیادہ آسانی سے جانچنے کے قابل بناتا ہے۔
عالمی ترتیبات کا اب بھی استعمال ہے
پورے JVM کے لیے ایک proxy پالیسی اس وقت مناسب ہو سکتی ہے جب ہر شامل client کا ارادہ اس کی پیروی کرنا ہو۔ وہ پالیسی ایپلیکیشن کے آغاز پر مقرر کریں اور جانچیں کہ کون سی لائبریریاں اس کی پاسداری کرتی ہیں۔
مسائل اس وقت پیدا ہوتے ہیں جب عالمی خصوصیات انفرادی درخواستوں کے لیے عارضی سوئچ کے طور پر استعمال ہوں۔ سرور میں پس منظر کے کارکن اور لائبریری کالز بیک وقت چل سکتے ہیں چاہے آپ کا طریقہ ہم وقت معلوم ہو۔ روٹنگ حالت اس client یا connector کے پاس رکھیں جو کنکشن کا مالک ہے، تاکہ کوئی دوسری درخواست کام کے بیچ میں اسے بدل نہ سکے۔