मेरे पास एक ऐसा एप्लिकेशन है जिसे इंटरनेट पर किसी सिस्टम को एसओएपी क्लाइंट अनुरोध करने की आवश्यकता है, इसलिए इसे हमारे HTTP प्रॉक्सी के बावजूद जाना होगा।सिस्टम-व्यापी संपत्ति सेट किए बिना JAX-WS अनुरोध के लिए मैं HTTP प्रॉक्सी का उपयोग कैसे कर सकता हूं?
// Cowboy-style. Blow away anything any other part of the application has set.
System.getProperties().put("proxySet", "true");
System.getProperties().put("https.proxyHost", HTTPS_PROXY_HOST);
System.getProperties().put("https.proxyPort", HTTPS_PROXY_PORT);
या डिफ़ॉल्ट ProxySelector (यह भी एक सिस्टम-वाइड सेटिंग) की स्थापना द्वारा:
// More Cowboy-style! Every thing Google has found says to do it this way!?!?!
ProxySelector.setDefault(new MyProxySelector(HTTPS_PROXY_HOST, HTTPS_PROXY_PORT));
न तो की
एक ऐसी प्रणाली के गुण के रूप में पूरे सिस्टम पर मूल्य निर्धारित करके ऐसा कर सकते यह एक बुद्धिमान विकल्प है यदि अन्य उपप्रणालीओं को वेब सर्वरों को विभिन्न HTTP प्रॉक्सी या बिना किसी प्रॉक्सी के एक्सेस करना चाहते हैं। ProxySelector
का उपयोग करके मुझे यह कॉन्फ़िगर करने दें कि कौन से कनेक्शन प्रॉक्सी का उपयोग करते हैं, लेकिन मुझे इसे विशाल एप्लिकेशन में हर चीज़ के लिए समझना होगा।
एक उचित एपीआई में एक विधि होगी जिसने ऑब्जेक्ट को java.net.Socket(java.net.Proxy proxy)
कन्स्ट्रक्टर की तरह लिया था। इस तरह आवश्यक सेटिंग्स सिस्टम के उस हिस्से के लिए स्थानीय हैं जिन्हें उन्हें सेट करने की आवश्यकता है। क्या JAX-WS के साथ ऐसा करने का कोई तरीका है?
मैं सिस्टम-व्यापी प्रॉक्सी कॉन्फ़िगरेशन सेट नहीं करना चाहता हूं।
'JAXWSProperties' मेरी JDK 1.6 में मौजूद प्रतीत नहीं होता है। – jbindel
अगर मैं कुछ भी नहीं दिखाता तो मैं इसे बाद में स्वीकार करूंगा। – jbindel
आपकी विधि काम करती है, और हमने इसे सफलतापूर्वक कार्यान्वित किया है, लेकिन मैंने समर्थित एपीआई और 'HttpsURLConnection.setDefaultSSLSocketFactory()' का उपयोग करके 'SSLSocketFactory' की JVM- विस्तृत सेटिंग के साथ जाने का निर्णय लिया। हम किसी भी कुंजी और कर्ट को एक डिफ़ॉल्ट कीस्टोर और ट्रस्टस्टोर के एक संस्करण में जोड़ देंगे। – jbindel