Proxy penerus untuk WebServiceTemplate milik Spring
Hubungkan transport HttpClient 5 yang dikonfigurasi dengan proxy ke WebServiceTemplate dan pertahankan pencegat header yang diperlukan pengirim SOAP.
WebServiceTemplate mengirim melalui WebServiceMessageSender-nya. Konfigurasikan klien HTTP pengirim itu ketika tujuan SOAP memerlukan proxy penerus.
Untuk Spring WS 4.1 dengan Apache HttpClient 5 tersedia:
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 adalah templat aplikasi yang sudah ada. URI layanan SOAP-nya tetap menjadi tujuan; klien HTTP memegang perantara, yang dapat berupa kandidat publik dari daftar proxy HTTP bila rute itu diizinkan.
Konstruktor klien kustom tidak menambahkan pencegat header biasa milik pengirim. Pertahankan saat merakit klien: ia menghapus header transport yang disediakan SOAP yang dikelola pemrosesan permintaan Apache. Pengirim yang dibangun melalui default pabrik klien adalah jalur konstruksi lain yang mempertahankan integrasi ini.
Tambahkan kredensial proxy dan batas waktu yang diperlukan pada klien kustom melalui antarmuka yang didukungnya sendiri. Metode setter pengirim bukan pengganti untuk mengonfigurasi klien yang sudah disediakan.
Pertahankan klien untuk beban kerja templat dan tutup sumber daya yang dimiliki saat dimatikan. Contoh ini menggunakan pengirim HttpClient 5; contoh Spring WS yang mengimpor org.apache.http menjelaskan generasi klien lain.