2 votos

¿Cómo ver la salida XML de la solicitud SOAP en Spring?

Soy nuevo en Spring SOAP requests. Quiero ver la salida XML final de la solicitud SOAP que incluye cabecera SOAP y envolvente SOAP.

Mientras depuraba llegué hasta este trozo de código

sendSourceAndReceiveToResult(partnerURI, source,
    new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message)
        throws IOException, TransformerException {

            StringSource mefHeaderSource = new StringSource(
                header);

            SoapHeader soapHeader = ((SoapMessage) message)
                .getSoapHeader();

            Transformer transformer = TransformerFactory
                .newInstance().newTransformer();

            transformer.transform(mefHeaderSource,
                soapHeader.getResult());

        }
    }, result);

Sospecho que aquí puedo ver en algún sitio la salida XML SOAP request poniendo algún logger pero no estoy seguro de estar en lo cierto. He intentado buscarlo pero en todos los posts disponibles en google no hay nada claro.

El problema que estamos depurando es que el cliente no es capaz de ver la cabecera SOAP en la petición SOAP.

4voto

user Puntos 41

Asegúrese de utilizar la versión 1.1 o superior de Commons Logging.

Para registrar todos los mensajes del lado del servidor, basta con establecer el registrador org.springframework.ws.server.MessageTracing en el nivel DEBUG o TRACE . En el nivel de depuración, sólo se registra el elemento root de la carga útil; en el nivel TRACE, todo el contenido del mensaje. Si sólo desea registrar los mensajes enviados, utilice el registrador org.springframework.ws.server.MessageTracing.sent; u org.springframework.ws.server.MessageTracing.received para registrar los mensajes recibidos.

En el lado del cliente, existen registradores similares: org.springframework.ws.client.MessageTracing.sent y org.springframework.ws.client.MessageTracing.received.

A continuación se muestra un ejemplo de configuración de log4j.properties, que registra el contenido completo de los mensajes enviados en el lado del cliente, y sólo el elemento root de la carga útil para los mensajes recibidos en el lado del cliente. En el lado del servidor, la carga útil Root se registra tanto para los mensajes enviados como para los recibidos:

log4j.rootCategory=INFO, stdout
log4j.logger.org.springframework.ws.client.MessageTracing.sent=TRACE
log4j.logger.org.springframework.ws.client.MessageTracing.received=DEBUG

log4j.logger.org.springframework.ws.server.MessageTracing=DEBUG

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p [%c{3}] %m%n

0voto

Babur Puntos 129

De la documentación de Spring para SoapEnvelopeLoggingInterceptor

EndpointInterceptor específico de SOAP que registra la solicitud completa y respuesta de los mensajes SoapMessage. Por defecto, request se registran los mensajes de solicitud, respuesta y fallo. cambiar mediante las propiedades logRequest, logResponse, logFault

puede activar este interceptor añadiendo

    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:sws="http://www.springframework.org/schema/web-services" .../>

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

      <sws:static-wsdl ..../>

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X