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);

Terapkan pengirim ini ke template yang sudah ada sebelum pemanggilan, dengan mempertahankan URI layanan, marshaller, dan pengaturan lain. Ini adalah Spring-WS 4.1.0 dengan Apache HttpClient 5. Jika templat menargetkan layanan SOAP publik yang diizinkan tanpa autentikasi proxy, alamat HTTP dari daftar proxy HTTP dapat mengisi proxy penyesuai.

withDefaults mempertahankan interceptor yang menghapus Content-Length dan Transfer-Encoding dari SOAP sebelum Apache menghasilkan pembingkaian HTTP. Menambahkan penyesuai proxy di sana mencegah integrasi itu digantikan oleh klien polos. Untuk klien Apache yang dibangun terpisah, pertahankan interceptor penghapus header milik Spring-WS.

Cocokkan impor dan pembuatan pengirim. Contoh lama dengan HttpComponentsMessageSender/org.apache.http memakai Apache 4, bukan SimpleHttpComponents5MessageSender dan antarmuka HttpHost ini.

Pertahankan pengirim yang dibuat manual selama masa hidup klien SOAP dan atur pemusnahannya secara normal setelahnya. Bean yang dikelola Spring dapat memakai siklus hidup kontainer. Templat lain yang mempertahankan pengirim lain tetap memakai konfigurasi transportasinya sendiri.

Artikel terkait