Spring-WS 4.1 پراکسی کو HttpComponents 5 کے ساتھ ترتیب دیں
Spring-WS 4.1 کی HttpComponents5 کلائنٹ فیکٹری کو حسب ضرورت بنائیں اور نتیجے میں بننے والے بھیجنے والے کو WebServiceTemplate سے منسلک کریں۔
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 اور دیگر ترتیبات محفوظ رکھیں۔ یہ Apache HttpClient 5 کے ساتھ Spring-WS 4.1.0 ہے۔ اگر ٹیمپلیٹ پراکسی توثیق کے بغیر اجازت یافتہ عوامی SOAP سروس کو ہدف بناتا ہے، تو HTTP پراکسی فہرست سے HTTP پتہ حسب ضرورت بنانے والے کی پراکسی بھر سکتا ہے۔
withDefaults اُس انٹرسیپٹر کو برقرار رکھتا ہے جو Apache کے HTTP فریمنگ بنانے سے پہلے SOAP کے فراہم کردہ Content-Length اور Transfer-Encoding کو ہٹاتا ہے۔ وہاں پراکسی حسب ضرورت کنندہ شامل کرنے سے اُس انضمام کو ننگے کلائنٹ سے بدلنے سے بچا جاتا ہے۔ الگ بنائے گئے Apache کلائنٹ کے لیے، Spring-WS کا ہیڈر ہٹانے والا انٹرسیپٹر برقرار رکھیں۔
درآمدات اور بھیجنے والے کی تیاری کو ہم آہنگ کریں۔ HttpComponentsMessageSender/org.apache.http استعمال کرنے والی پرانی مثالیں Apache 4 استعمال کرتی ہیں، یہ SimpleHttpComponents5MessageSender اور HttpHost انٹرفیس نہیں۔
SOAP کلائنٹ کی پوری عمر کے دوران ہاتھ سے بنایا گیا بھیجنے والا رکھیں اور بعد میں اُس کی معمول کی تباہی کا انتظام کریں۔ Spring کے زیرِ انتظام bean کنٹینر کا لائف سائیکل استعمال کر سکتا ہے۔ دیگر بھیجنے والے رکھنے والے دیگر ٹیمپلیٹ اپنی اپنی نقل و حمل کی ترتیب رکھتے ہیں۔