import org.apache.hc.core5.http.HttpHost;
import org.springframework.ws.transport.http.HttpComponents5ClientFactory;
import org.springframework.ws.transport.http.SimpleHttpComponents5MessageSender;

var factory = HttpComponents5ClientFactory.withDefaults();
factory.addClientBuilderCustomizer(builder ->
    builder.setProxy(new HttpHost("http", "proxy.example", 8080)));

var sender = new SimpleHttpComponents5MessageSender(factory);
template.setMessageSender(sender);

कॉल से पहले इस प्रेषक को मौजूदा template पर लागू करें और सेवा का URI, marshaller तथा अन्य सेटिंग्स सुरक्षित रखें। यह Spring-WS 4.1.0 है Apache HttpClient 5 के साथ। यदि टेम्पलेट प्रॉक्सी प्रमाणीकरण के बिना किसी अनुमत सार्वजनिक SOAP सेवा को लक्षित करता है, तो HTTP प्रॉक्सी सूची से एक HTTP पता अनुकूलक का प्रॉक्सी भर सकता है।

withDefaults उस इंटरसेप्टर को बनाए रखता है जो Apache द्वारा HTTP फ़्रेमिंग बनाने से पहले SOAP से मिले Content-Length और Transfer-Encoding को हटाता है। वहीं प्रॉक्सी अनुकूलक जोड़ने से उस एकीकरण को नंगे क्लाइंट से बदलने से बचा जाता है। अलग से बनाए गए Apache क्लाइंट के लिए, Spring-WS के हेडर हटाने वाले इंटरसेप्टर को बनाए रखें।

इम्पोर्ट और प्रेषक निर्माण को मेल खिलाएँ। HttpComponentsMessageSender/org.apache.http वाले पुराने उदाहरण Apache 4 का उपयोग करते हैं, इस SimpleHttpComponents5MessageSender और HttpHost इंटरफ़ेस का नहीं।

SOAP क्लाइंट के पूरे जीवनकाल के लिए हाथ से बनाया गया प्रेषक रखें और बाद में उसका सामान्य विनाश व्यवस्थित करें। Spring द्वारा प्रबंधित बीन कंटेनर के जीवनचक्र का उपयोग कर सकता है। अन्य प्रेषक रखने वाले अन्य टेम्पलेट अपना स्वयं का परिवहन कॉन्फ़िगरेशन रखते हैं।

संबंधित लेख