Pour détailler le flux SOAP on les choix suivants :

Java code

Dans le stub (SoapBindingStub), lors de l'appel (call) d'un service (méthode)

System.err.println("RequestMessage MessageType:"+_call.getMessageContext().getRequestMessage().getMessageType());
            	System.err.println("RequestMessage SOAPEnvelope:"+_call.getMessageContext().getRequestMessage().getSOAPEnvelope());
            	System.err.println("RequestMessage SOAPHeader:"+_call.getMessageContext().getRequestMessage().getSOAPHeader());
            	System.err.println("RequestMessage SOAPBody:"+_call.getMessageContext().getRequestMessage().getSOAPBody());
            	System.err.println("RequestMessage SOAPPartAsString:"+_call.getMessageContext().getRequestMessage().getSOAPPartAsString());
 
            	System.err.println("ResponseMessage MessageType:"+_call.getMessageContext().getResponseMessage().getMessageType());
            	System.err.println("ResponseMessage SOAPEnvelope:"+_call.getMessageContext().getResponseMessage().getSOAPEnvelope());
            	System.err.println("ResponseMessage SOAPHeader:"+_call.getMessageContext().getResponseMessage().getSOAPHeader());
            	System.err.println("ResponseMessage SOAPBody:"+_call.getMessageContext().getResponseMessage().getSOAPBody());
            	System.err.println("ResponseMessage SOAPPartAsString:"+_call.getMessageContext().getResponseMessage().getSOAPPartAsString());
RequestMessage MessageType:null
RequestMessage SOAPEnvelope:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWeb xmlns="urn:www.placeoweb.com"><in0><ns1:dateEnvoi xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T09:04:15.437Z</ns1:dateEnvoi><ns2:devis xmlns:ns2="http://echangee.www.placeoweb.com"><ns2:client><ns2:batiment xsi:nil="true"/><ns2:codePostal xsi:nil="true"/> ... </in0></ServiceWeb></soapenv:Body></soapenv:Envelope>
RequestMessage SOAPHeader:
RequestMessage SOAPBody:<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><ServiceWeb xmlns="urn:www.placeoweb.com"><in0><ns1:dateEnvoi xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T09:04:15.437Z</ns1:dateEnvoi><ns2:devis xmlns:ns2="http://echangee.www.placeoweb.com"><ns2:client><ns2:batiment xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><ns2:codePostal xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> ... </in0></ServiceWeb></soapenv:Body>
RequestMessage SOAPPartAsString:<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWeb xmlns="urn:www.placeoweb.com"><in0><ns1:dateEnvoi xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T09:04:15.437Z</ns1:dateEnvoi><ns2:devis xmlns:ns2="http://echangee.www.placeoweb.com"><ns2:client><ns2:batiment xsi:nil="true"/><ns2:codePostal xsi:nil="true"/> ... </in0></ServiceWeb></soapenv:Body></soapenv:Envelope>
ResponseMessage MessageType:response
ResponseMessage SOAPEnvelope:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWebResponse xmlns="urn:www.placeoweb.com"><ServiceWebReturn><ns1:dateRetour xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T08:59:33.977Z</ns1:dateRetour></ServiceWebReturn></ServiceWebResponse></soapenv:Body></soapenv:Envelope>
ResponseMessage SOAPHeader:
ResponseMessage SOAPBody:<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><ServiceWebResponse xmlns="urn:www.placeoweb.com"><ServiceWebReturn><ns1:dateRetour xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T08:59:33.977Z</ns1:dateRetour></ServiceWebReturn></ServiceWebResponse></soapenv:Body>
ResponseMessage SOAPPartAsString:<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWebResponse xmlns="urn:www.placeoweb.com"><ServiceWebReturn><ns1:dateRetour xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T08:59:33.977Z</ns1:dateRetour></ServiceWebReturn></ServiceWebResponse></soapenv:Body></soapenv:Envelope>

Logger

Lancer votre programme avec un logger log4j, avec les arguments et fichier suivants :

-Dlog4j.configuration="file:/C:/workspaceEclipse/log4j/log4j.properties"

log4j.properties :

#http://beuss.developpez.com/tutoriels/java/jakarta/log4j/
#http://wiki.mediabox.fr/tutoriaux/java/log4j

#définition du niveau et des Appender du rootLogger
log4j.rootLogger=DEBUG, monAppender, stdout
 
#configuration de "monAppender"
#nous allons envoyer les messages dans la console de Tomcat
log4j.appender.monAppender=org.apache.log4j.ConsoleAppender
#log4j.appender.monAppender=org.jboss.logging.log4j.ConsoleAppender
 
#définition du Layout pour "monAppender"
log4j.appender.monAppender.layout=org.apache.log4j.PatternLayout
 
#définition du pattern d'affichage pour "monAppender"
#voici un exemple de sortie que l'on va obtenir : 2005-06-18 14:53:37 DEBUG [Main] Hello World
log4j.appender.monAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} %m%n
#log4j.appender.monAppender.layout.ConversionPattern=%c{1} %m%n

# Si par exemple je veux modifier le niveau de logging des classes se trouvant 
# dans le package com.liguo.layout, 
# je n'ai qu'a ajouter la ligne suivante dans le fichier de configuration
#log4j.logger.com.liguo.layout=WARN
log4j.logger=INFO
log4j.logger.com=ALL
log4j.logger.com.placeoweb=ALL
log4j.logger.org=INFO
#log4j.logger.org=ALL
#log4j.logger.org.apache.axis.transport.http.HTTPSender=DEBUG, axisLogFile
log4j.logger.org.apache.axis.transport.http.HTTPSender=DEBUG

Résultat du log :

2010-04-16 11:13:54 DEBUG [HTTPSender] Enter:  HTTPSender::invoke
2010-04-16 11:13:55 DEBUG [HTTPSender] XML sent:
2010-04-16 11:13:55 DEBUG [HTTPSender] ---
2010-04-16 11:13:55 DEBUG [HTTPSender] POST /uri/services/ServiceWeb HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: 81.255.92.77
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 5025

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWeb xmlns="urn:ww.placeoweb.com"><in0><ns1:dateEnvoi xmlns:ns1="http://echangee.ww.placeoweb.com">2010-04-16T09:13:54.015Z</ns1:dateEnvoi> ... </in0></ServiceWeb></soapenv:Body></soapenv:Envelope>
2010-04-16 11:14:03 DEBUG [HTTPSender] HTTP/1.1 200 OK
2010-04-16 11:14:03 DEBUG [HTTPSender] Date Fri, 16 Apr 2010 09:13:21 GMT
2010-04-16 11:14:03 DEBUG [HTTPSender] Server Apache
2010-04-16 11:14:03 DEBUG [HTTPSender] Set-Cookie SMSESSION=9GXw3KrdlN7NIk8+gZV3P6MRgo1loLn/b7QDRLz0kowRUqvH8LVlA+rMSZgkLkGcD10eq9F+A4QuEbxMg3ZYpuY/3WbglJ9cZwd1/BxKHPasFS27pbgWXcEO54k/NqsDhKh6+2gf/hy6QtvfA2NVwTbxWihJzLZwAHyLYyRTVAvVieIlgPHLV/AVBSEkQ+ra7eqJAouaRXzU29HkPQP/2HQ/SL9OHF1TwKwQlaO7Rx91DQLmL6xKE4diDnWp2vU5/qYDXyGLgaQNbtAfATSlwvbTqyWcRwCLl8nE8MwpsDDW2PjDVVtQCx8gDl7Z+Q/Q/NqOKEBq6MGrfYDqdmlD5t59JY/okh1ZvkFDpFJ79El7PpJUvRXn9jR3GwwD8IMd2/0rxN2No2luUVqn+z8pVN3lQugIb2yp9dGGfJ56I2ASoWuS8NIAIVJCgrR7Ehs2EOGyIAhxZt5qkouJioOgL7BQlteby5QA/FM7D99NNjMXXXqdk2tboFfBUlqG+Vd4HKvkwQHV0OeiQvtJ3+Utinh1QffLyNwp4yI6sY2mLuXydkcXQqhdd6WSgNSGebwUHhDNn/uAqM7KoZAgny8oP3jKZW/xZItVJZyLYY4HHevSqZH3OcFAT4jZ0jCbnnRmjiA7QKzvzn5S8zMNMIOTRgcD7s682ra0yBlXjR8bu/W7jFmabntvzp5z/0+Lp3LrJIHqffpSWPPBqcsypUzObQYgJ/6QOCx6u7+JUFZ4X166rD6iFouLTmcFPiddDOGo1nRh+mS5dZJUD7DqQO+Umv3OEwhlPLr81HoTm4P7wwNe5HY0QejB8oImwcwEcr03TdrCww8BBbX3kbMgaYtGNS6Ylm9DDp5OZ9eb3j/qVIgJArwPn04k1fjWzYqa2aS4btd0q1uPOZ06MganCnQgKfGbKICEWKhnzyIEBURAOoYUa7eOi2mcaJVKC/1I+YrPqF/1rXZLA8bSnZkza53uI0P+1WMSykpxMHvTcVQv+a1I9mVsV4mOlrDL8bUOmn8EYUl0Dvuh2LEJ7zxtFXL2W5JsfayXfNX5udeYhK6vZhzap6KgekVCKqxPl508f6WB; path=/; domain=.placeoweb.fr
2010-04-16 11:14:03 DEBUG [HTTPSender] Set-Cookie SMIDENTITY=/VM8ZHqqahrH02D32mkQqNVBVRcu5qwh5QN6GjwIufsUqg5X92oiYLXmQmeBy49l4yrZMuk7XD5ONlThv4RkbAvK61FL8KEIY7ErcelxLWkeRhNM48N8Apyz2E+/CY91+DbWI+5YP+CBgy0cztJadvVMf5bppSica8v7CPUYzvUqEoIg9kQVrnvaGs90eoCHnAXe4YyrQEalKM1C5rDCsAd43E299+yg8lTRrwWQERP6Cq1OMe/5Ndhuhvmlsv4TT5pMdj9fRJWSN2Y9uwcRFVg0zk3hnMp4zw+D7XUdNwmzGyQzZbPENyIM5IszBejRzWWDn/8YOZ4Fbpo9y+7A1xnPfmTeW2Wp1EUhSU4Yf0FXn9H4pfmi9HqkC0/LrcwG8reHRB2s3Clu3kWvOFXHIaDZOHSja2JcvbfAGUCQUfaEAtAFUjktTdt4h82b7Vcqnbg97hNNPrFL4/5LP+pzk1Tfyv1vgF6tjIcgykwikXjoT52FTEdMB1fNW+isRD/NNmNpjAiXtXceIeo0qTgsqw5nUQ2hwYTxOC8TgBy1fLbP5EnoTw3SNNlXSNfTJUgWCeMCCg423KbiyiT7c9BK3hEgFtBz20blc/ee7bY6os+vYg+uwswyeyGJjWP9BuNG0vXopyIapSkcVLIS8DqR7umv1ANiym9zv+XuOChzTZInIm/Z0G+QvuoXJKLhc5+M; path=/; domain=.placeoweb.fr
2010-04-16 11:14:03 DEBUG [HTTPSender] Content-Type text/xml
2010-04-16 11:14:03 DEBUG [HTTPSender] Via 1.1 b2b-internet-soap-xmlfirewall
2010-04-16 11:14:03 DEBUG [HTTPSender] Warning 214 b2b-internet-soap-xmlfirewall DataPower Transformation Applied
2010-04-16 11:14:03 DEBUG [HTTPSender] Connection close
2010-04-16 11:14:03 DEBUG [HTTPSender] 
no Content-Length
2010-04-16 11:14:03 DEBUG [HTTPSender] 
XML received:
2010-04-16 11:14:03 DEBUG [HTTPSender] ---
2010-04-16 11:14:03 DEBUG [HTTPSender] <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWebResponse xmlns="urn:ww.placeoweb.com"><ServiceWebReturn><ns1:dateRetour xmlns:ns1="http://echangee.ww.placeoweb.com">2010-04-16T09:09:20.933Z</ns1:dateRetour> ... </ServiceWebReturn></ServiceWebResponse></soapenv:Body></soapenv:Envelope>
2010-04-16 11:14:03 DEBUG [HTTPSender] Exit:  HTTPDispatchHandler::invoke

Loguer sous Jboss les appels client Axis (émetteurs requête et réponse )

Jboss 4 : Loguer sous Jboss 4 les appels client Axis (émetteurs requête et réponse )

<!-- ==================== -->
   <!-- APPENDER DE WS AXIS  -->
   <!-- ==================== -->
   <appender name="AXIS_WS" class="org.jboss.logging.appender.RollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.home.dir}/log/axis.ws.log"/>
      <param name="Append" value="true"/>
      <!--<param name="DatePattern" value="'.'yyyy-MM-dd"/>-->
      <param name="MaxBackupIndex" value="10"/>
      <param name="MaxFileSize" value="100MB"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
      </layout>
   </appender>  
 
   <category name="org.apache.axis.transport.http.HTTPSender" additivity="false">
       <priority value="DEBUG"/>
       <appender-ref ref="AXIS_WS"/>
   </category>

Jboss 6 : Loguer sous Jboss 6 les appels client Axis (émetteurs requête et réponse )

<logger category="org.apache.axis.transport.http.HTTPSender" use-parent-handlers="false" additivity="false">
     <level name="DEBUG" />
     <handlers>
         <handler-ref name="AXIS_WS"/>
     </handlers>
   </logger>

Loguer sous Jboss ce que l'on a reçu en tant que serveur AXIS

Jboss 4 : Loguer sous Jboss 4 ce que l'on a reçu en tant que serveur AXIS (requête émise - sans la réponse)

<category name="org.apache.axis.providers.java.RPCProvider">
      <priority value="ALL"/>
   </category>
2010-04-16 12:37:23,250 DEBUG [org.apache.axis.providers.java.RPCProvider] body is <ServiceWeb ... FLUX SOAP

Jboss 6 : Loguer sous Jboss 6 ce que l'on a reçu en tant que serveur AXIS (requête émise - sans la réponse)

<logger category="org.apache.axis.providers.java.RPCProvider" use-parent-handlers="false" additivity="false">
     <level name="DEBUG"/>
     <handlers>
         <handler-ref name="AXIS_WS"/>
     </handlers>
   </logger>

Autres alternatives externes

Analyse du flux réseau avec Wireshark (anciennement Ethereal) qui est un logiciel libre d'analyse de protocole,

Ressources