Mostrar los mensajes de Entrada/Salida en el Sistema de Log
Prerequisitos
- En el POM principal del proyecto, el <parent> tiene que tener la versión 2.0.29 (o 2.0.29-primefaces6).
- En el POm del modulo web comprobamos is existe el artefaco fundeweb-jaxws, sino existe lo añadimos justo debajo del artefacto fundeweb-jaxrs:
<dependency> <groupId>es.um.atica.fundeweb</groupId> <artifactId>fundeweb-jaxws</artifactId> </dependency>
- Realizamos una Maven –> Update project.
- Verificar que en Maven Dependencies aparezca una nueva dependencia con nombre fundeweb-jaxws.
Modo de Empleo
Para poder mostrar los mensajes de Entrada/Salida de un servicio WEB SOAP, vamos a utilizar un SOAPHandler. En nuestro servidor (clase que implementa el servicio web) o cliente de servicio web tenemos que añadir
@HandlerChain(file = "es/um/atica/jaxws/handlers/log-handler.xml")
debajo de las anotaciones @WebService (para el servicio web) y @WebServiceClient para el cliente del servicio. Un ejemplo:
package ticarum.cursosoa.calculadora.servicio; import javax.jws.HandlerChain; import javax.jws.WebService; import org.jboss.seam.log.Log; import org.jboss.seam.log.Logging; @WebService(serviceName = "CalculadoraSEIService", portName = "CalculadoraSEIPort", targetNamespace = "urn:ticarum:cursosoa:calculadora:servicio", wsdlLocation = "WEB-INF/wsdl/calculadora.wsdl", endpointInterface = "ticarum.cursosoa.calculadora.servicio.CalculadoraSEI") @HandlerChain(file = "es/um/atica/jaxws/handlers/log-handler.xml") public class CalculadoraSEIImpl implements CalculadoraSEI { private static final Log LOG = Logging.getLog(CalculadoraSEIImpl.class); ... }
Ahora nos apareceran los mensajes de entrada/salido en el sistema de log de la aplicación. Además se incluye un número de secuencia en estos para poder relacionar la pareja de mensajes. Recordad que en los servicios web OneWay, no hay mensaje de respuesta. Ejmplo de mensajes:
24 jul 2018 14:06:50,541 DEBUG (SoapLogRequestHandler.java:170)- [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] - Usuario: ANONIMO-1532434010307 - Glasfish Metro Soap Inbound Message - 1 /*---[ HTTP request - 1 ]-----------------------------------*/ Accept: application/soap+xml, application/dime, multipart/related, text/* Cache-Control: no-cache Connection: close Content-Length: 365 Content-Type: text/xml; charset=utf-8 Host: localhost:8001 Pragma: no-cache SOAPAction: "" User-Agent: IBM Web Services Explorer <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="urn:ticarum:cursosoa:calculadora:servicio" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Header/> <soapenv:Body> <q0:SumaRequest> <a>1</a> <b>1</b> </q0:SumaRequest> </soapenv:Body> </soapenv:Envelope> /*-----------------------------------------------------------------------*/ 24 jul 2018 14:06:50,551 INFO (CalculadoraSEIImpl.java:35)- [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] - Usuario: ANONIMO-1532434010307 - Ejecutando la operacion suma 24 jul 2018 14:06:50,551 DEBUG (CalculadoraSEIImpl.java:37)- [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] - Usuario: ANONIMO-1532434010307 - Parametros de entrada. Parametro parameters: ticarum.cursosoa.calculadora.servicio.SumaRequest@4c3cdb79 24 jul 2018 14:06:50,571 DEBUG (SoapLogRequestHandler.java:170)- [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] - Usuario: ANONIMO-1532434010307 - Glasfish Metro Soap Outbound Message - 1 /*---[ HTTP response - 1 ]-----------------------------------*/ <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <S:Body> <ns2:SumaResponse xmlns:ns2="urn:ticarum:cursosoa:calculadora:servicio"> <return>2.0</return> </ns2:SumaResponse> </S:Body> </S:Envelope> /*-----------------------------------------------------------------------*/
El tamaño maximo de mensaje que se imprime es de 4096 bytes (4KB). Cuando un mensaje tiene un tamaño mayor, se trunca el mensaje por ese byte.
Si se quiere que el tamaño del mensaje sea mayor, tenemos que editar el fichero web.xml añadiendo:
<context-param> <param-name>es.um.atica.jaxws.handlers.SoapLogRequestHandler.dumpThreshold</param-name> <param-value>1048576</param-value> </context-param>
en el ejemplo aumnetamos el limite a 1048576 bytes (1MB).
Por defecto cuando se añade este SoapHandler, solo se vera el log en los entornos local y desarrollo.
Para que se vean los mensajes en el fichero de los en los entornos de en pre-producción y producción, tenemos que añadir en el fichero log4j.xml lo siguiente:
<logger name="es.um.atica.jaxws.handlers.SoapLogRequestHandler"> <level value="DEBUG"/> </logger>
— JUAN MIGUEL BERNAL GONZALEZ 24/07/2018 13:23
- fdw2.0/fundeweb2.0/gt/jaxws/mostrar_mensajes_log.txt
- Última modificación: 08/06/2020 13:45
- por JUAN MIGUEL BERNAL GONZALEZ