2015-08-25 18 views
8

So che è possibile utilizzare il monitoraggio TCP/IP di Eclipse per tracciare i messaggi SOAP. L'ho provato ma non è in grado di monitorare il mio localhost. TCP/IP non mostra l'host locale nella sua console.Come tracciare le richieste SOAP inviate da webServiceTemplate

posso accedere all'applicazione tramite http://localhost:8080/MyApp/ In configurazione TCP/IP Ho seguito

Local monitoring port 9090 (a random port that I have chosen) 
Host name: localhost 
Port: 8080 
Type: TCP/IP 
Timeout:0 

C'è un modo per risolvere il problema con il protocollo TCP/IP o trovare qualsiasi software alternativo?

+1

impostare la registrazione del livello di traccia per 'org.springframework.ws.client.MessageTracing'. –

+0

Vorrei andare con Wireshark in quanto è uno strumento assolutamente incredibile per eseguire il debug di SOAP. Catturate i pacchetti, digitate 'http' nel campo filtro per mostrare solo le richieste/risposte http (potete specificare src o dst e zillion di opzioni) - fate clic con il tasto destro del mouse sulla voce dell'elenco ->" Follow TCP Stream ". Oppure usa uno dei plugin. –

risposta

4

Forse invece di utilizzare il monitoraggio TCP/IP di Eclipse, preferiresti abilitare la registrazione Spring incorporata? In questo caso è possibile attivare la registrazione a livello DEBUG o TRACE per

  • org.springframework.ws.client.MessageTracing se si desidera accedere dal lato del cliente
  • org.springframework.ws.server.MessageTracing se si desidera accedere al livello di server

On il livello DEBUG, viene registrato solo l'elemento root del payload; sul livello TRACE, l'intero contenuto del messaggio. Vedere Spring documentation per i dettagli e un esempio di configurazione Log4J.

In alternativa, è possibile configurare un PayloadLoggingInterceptor o SoapEnvelopeLoggingInterceptor. In beans.xml si può fare in questo modo:

<sws:interceptors> 
    <bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/> 
</sws:interceptors> 

più su questa soluzione here (sezione 5.5.2.1)

Nota che la primavera utilizza commons-logging facciata per la registrazione, quindi è necessario un quadro di registrazione effettiva vedere i registri, ad es. Log4J.

2

E 'possibile registrare un messaggio SOAP dal lato client attivando le seguenti proprietà di sistema:

System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true"); 
System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true"); 
System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dump", "true"); 
System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dump", "true"); 

Riferimento:

Tracing XML request/responses with JAX-WS when error occurs

4

EDIT: Wireshark è uno dei software più completo per questo (ma è un po 'coinvolto)

Ho usato, Fiddler e Charlesproxy, per lo stesso - Web Svcs, Rest, SOAP (dopo aver fallito miseramente negli strumenti Eclipse). Entrambi sono molto superiori a Eclipse e molto facili da usare.

Ecco il modo in cui si imposta fiddler-

  1. Scaricare ed avviare violinista.
  2. Add seguenti opzioni VM nelle preferenze Eclipse

    DproxySet=true -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888

  3. alternativa, è possibile anche impostare programatically

    System.setProperty("http.proxyHost", "127.0.0.1"); System.setProperty("https.proxyHost", "127.0.0.1"); System.setProperty("http.proxyPort", "8888"); System.setProperty("https.proxyPort", "8888");

  4. Riavviare l'applicazione. (Non ho mai bisogno di riavviare Eclipse stesso , ma eclissi, a volte ha una mente propria)

Ecco, questa è la configurazione più comune e di base, utile per il 90% di casi, ho affrontato. Nota: Fiddler è in ascolto di default sulla porta 8888.

Vi è un'ulteriore configurazione, se il server utilizza SSL/certificati. Questo è il collegamento completo a documentation.

Nota: c'è molto contenuto, anche su stackoverflow su queste impostazioni, in caso di blocco.

Inoltre, Charlesproxy è anche molto buono, ma personalmente ho usato il violinista principalmente per lo sviluppo del client Webservice.

+0

Ho usato wireshark ma sono stato sopraffatto dal numero di messaggi HTTP che ha mostrato. – Jack

+0

Lo so, ecco perché non lo consiglio come prima scelta. Ma è estremamente potente e, una volta capito, probabilmente non hai bisogno di altri strumenti. Hai già provato il violinista? – eXc

1

È possibile utilizzare wireshark con loopback abilitato e aggiungere http come filtro. Quale sarà il tuo scopo