یک پروکسی پیشرو برای WebServiceTemplate در Spring
یک انتقال HttpClient 5 پیکربندیشده با پروکسی را به WebServiceTemplate متصل کنید و درونگیر هدر موردنیاز فرستنده SOAP را حفظ کنید.
WebServiceTemplate از طریق WebServiceMessageSender خود ارسال میکند. وقتی مقصد SOAP به پروکسی پیشرو نیاز دارد، کلاینت HTTP آن فرستنده را پیکربندی کنید.
برای Spring WS 4.1 با Apache HttpClient 5 در دسترس:
var http = org.apache.hc.client5.http.impl.classic.HttpClients.custom()
.setProxy(new org.apache.hc.core5.http.HttpHost(
"http", "proxy.example", 8080))
.addRequestInterceptorFirst(
new org.springframework.ws.transport.http
.HttpComponents5ClientFactory.RemoveSoapHeadersInterceptor())
.build();
var sender = new org.springframework.ws.transport.http
.HttpComponents5MessageSender(http);
webServiceTemplate.setMessageSender(sender);webServiceTemplate همان قالب موجود برنامه است. URI سرویس SOAP آن مقصد باقی میماند؛ کلاینت HTTP واسطه را نگه میدارد که در صورت مجاز بودن آن مسیر میتواند نامزدی عمومی از فهرست پروکسی HTTP باشد.
سازندهٔ کلاینت سفارشی درونگیر هدر معمول فرستنده را اضافه نمیکند. هنگام مونتاژ کلاینت آن را حفظ کنید: هدرهای انتقالی را که SOAP فراهم میکند و پردازش درخواست Apache آنها را مدیریت میکند حذف میکند. فرستندهای که از طریق پیشفرضهای کارخانهٔ کلاینت ساخته شود مسیر ساخت دیگری است که این یکپارچگی را حفظ میکند.
اعتبارنامهها و مهلتهای لازم پروکسی را از طریق رابطهای پشتیبانیشدهٔ خودش به کلاینت سفارشی اضافه کنید. متدهای تنظیم فرستنده جایگزین پیکربندی کلاینتی که از قبل تأمین شده نیستند.
کلاینت را برای بار کاری قالب نگه دارید و منابع تحت مالکیت را هنگام خاموششدن ببندید. این نمونه از فرستندهٔ HttpClient 5 استفاده میکند؛ نمونههای Spring WS که org.apache.http را وارد میکنند نسل دیگری از کلاینت را توصیف میکنند.