2016-05-12 107 views
7

Come configurare la mia applicazione Spring MvC 4 con Spring WS per stabilire una connessione SSL a due vie con una terza parte come Bank. Devo scambiare i miei certificati e anche verificare i certificati del server e quindi scambiare messaggi di Soap. Se qualche link o codice o procedura si prega gentilmente di aggiornareCome inviare messaggi di richiesta Soap in Spring Ws a un server che accetta messaggi di richiesta Soap?

+1

Vuoi produrre un servizio web o consumare uno? Sono un po 'confuso ... Sembra che tu voglia consumarne uno però. Allora dovresti dare un'occhiata a questo: https://spring.io/guides/gs/consuming-web-service/ – NWessel

+0

Per chiarimenti, dove hai bisogno della connessione SSL? Per il servizio Web che desideri utilizzare? –

+0

Ti suggerisco di dedicare del tempo a leggere la guida di riferimento di Spring WS ... La guida ti dice tutto ciò di cui hai bisogno, a parte la configurazione SSL. –

risposta

2

Avviare il VM con le proprietà necessarie per chiavi e trustore come descritto here in the 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=... 

Poi nel codice del client è necessario ottenere lo SSLSocketFactory

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

e allegarlo al WebServiceTemplate (Snippet per la creazione di HttpClient tratto da ClientCustomSSL from apache examples):

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

come utilizzare il metodo marshall e ricevere dopo aver impostato MessageSender – briantaurostack7

3

È possibile con Spring-WS. Devi utilizzare l'API WebServiceTemplate fornita da Spring WS. Di seguito è il modo di usarlo.

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

} 

prega di fare riferimento questo link

E un altro utile link2