Как отправить сообщения запроса Soap весной Ws на сервер, который принимает сообщения запроса Soap?

Как настроить приложение Spring MvC 4 С Spring WS, чтобы установить двустороннее SSL-соединение с третьей стороной, такой как банк .Мне нужно обменять мои сертификаты, а также проверить сертификаты сервера, а затем обменяться сообщениями Soap. Если какие-либо ссылки или код или процедура, пожалуйста, обновите

2 ответов


запустите виртуальную машину с необходимыми свойствами для keystore и trustore, как описано здесь, в jsse doc:

 -Djavax.net.ssl.keyStoreType=yourKeystoreType(jks,pkcs12,etc.)
 -Djavax.net.ssl.trustStoreType=yourTruststoreType(jks,pkcs12,etc.)  
 -Djavax.net.ssl.keyStore=/path/to/your/keystore  
 -Djavax.net.ssl.trustStore=/path/to/your/truststore
 -Djavax.net.debug=ssl  
 -Djavax.net.ssl.keyStorePassword=...  
 -Djavax.net.ssl.trustStorePassword=...

тогда в вашем клиентском коде вам нужно получить SSLSocketFactory

SSLSocketFactory sslsocketfactory =(SSLSocketFactory) SSLSocketFactory.getDefault();

и прикрепите его к WebServiceTemplate (фрагмент для создания HttpClient, взятый из ClientCustomSSL из примеров apache):

WebServiceMessageSender sender = new HttpComponentsMessageSender(HttpClients.custom().setSSLSocketFactory(sslsocketfactory ));
getWebServiceTemplate().setMessageSender(sender);

это возможно с Spring-WS. Вы должны использовать WebServiceTemplate API, предоставляемый Spring WS. Следовать путь использовать его.

import java.io.StringReader;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.client.core.WebServiceTemplate;
import org.springframework.ws.transport.WebServiceMessageSender;

public class WebServiceClient {

    private static final String MESSAGE =
        "<message xmlns=\"http://tempuri.org\">Hello Web Service World</message>";

    private final WebServiceTemplate webServiceTemplate = new WebServiceTemplate();

    public void setDefaultUri(String defaultUri) {
        webServiceTemplate.setDefaultUri(defaultUri);
    }

    // send to the configured default URI
    public void simpleSendAndReceive() {
        StreamSource source = new StreamSource(new StringReader(MESSAGE));
        StreamResult result = new StreamResult(System.out);
        webServiceTemplate.sendSourceAndReceiveToResult(source, result);
    }

    // send to an explicit URI
    public void customSendAndReceive() {
        StreamSource source = new StreamSource(new StringReader(MESSAGE));
        StreamResult result = new StreamResult(System.out);
        webServiceTemplate.sendSourceAndReceiveToResult("http://localhost:8080/AnotherWebService",
            source, result);
    }

}

пожалуйста, обратитесь к этому ссылке

и еще одно полезное link2