tutorial services jax con java jax-ws

java - services - jax-ws maven



Rastreo de solicitudes/respuestas XML con JAX-WS cuando se produce un error (7)

Quiero registrar solicitudes de envío de jabón sin formato si hay algún error, estoy usando JAX-WS. Cualquier ayuda será apreciada.

¿Existe una forma fácil (también conocida como: no usar un proxy) para obtener acceso al XML de solicitud / respuesta sin procesar para un servicio web publicado con la implementación de referencia JAX-WS (la que se incluye en JDK 1.5 y superior) solo cuando se produce una excepción en respuesta? Quiero registrar la solicitud de SOAP sin formato para poder probarlo a través de cualquier cliente de servicio web en una etapa posterior


Además de la respuesta de Torsten

com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump = true

Asegúrese de configurar esto antes de crear una instancia del objeto WebServiceClient (el que extiende el Servicio)



Esto funcionó para mí:

-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true


Lo primero que puede intentar es usar una o las dos de las siguientes propiedades del sistema:

Cliente:

com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

Servidor:

com.sun.xml.ws.transport.http.HttpAdapter.dump=true


Si está trabajando con Jboss 6.1 y desea imprimir los registros de la solicitud de clases generadas por JAX-WS al servicio web SOAP, abra el archivo /home/oracle/jboss-eap-6.1/bin/standalone.sh nota : vaya donde has instalado jboss

Encontraras algo asi

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n"

Cámbiala a la que se muestra abajo.

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n"

También asegúrese de habilitar la depuración

DEBUG_MODE=true


Solo pensé en mencionar esto:

¿La pregunta de cuándo usar el nombre de la propiedad con el internal y cuándo no?

Si lees la Guía de Metro te dirá que uses:

en cliente:

com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

en el servidor:

com.sun.xml.ws.transport.http.HttpAdapter.dump=true

Sin embargo: me parece que cuando la biblioteca JAX-WS RI se incluyó como estándar con el JDK (esto fue con Java 6), entonces Sun tuvo que cambiar el nombre del nombre de la propiedad para incluir ''interno''. Por lo tanto, si está utilizando JAX-WS RI, ya que viene incluido con el JDK, debe asegurarse de agregar lo internal al nombre de la propiedad. De lo contrario, no funcionará. En otras palabras necesitas usar:

en cliente:

com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true

en el servidor:

com.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true

Por otro lado, si está utilizando una versión independiente de JAX-WS RI (o de Metro en su conjunto), supongo que debería usar el nombre de la propiedad sin el internal .

Me alegraré si alguien tiene conocimiento interno sobre esto y puedo decir si esto es cierto o no.


Utilizar

com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true

y

com.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true

en su lugar (tenga en cuenta el "interno" en el nombre del paquete), esto fue el truco para mí.

Saludos, Torsten