mkyong jax from example consume java web-services jax-ws

jax - soap web service java



Cliente de servicios web Java JAX-WS: ¿cómo se registra el registro y la respuesta xml? (3)

LoggingHandler una implementación de LoggingHandler que implementa SOAPHandler<SOAPMessageContext>

Debería registrarse cada vez que se handleMessage (y nunca se llama en mi caso)

MyService service = new MyService(); MyServicePort port = service.getPortType();

ahora intento esto:

BindingProvider bindingProvider = (BindingProvider)port; bindingProvider.getBinding().getHandlerChain().add(new LoggingHandler());

No veo ninguna solicitud / respuesta xml sin embargo.

¿Puedes sugerir alguna solución? Tal vez hay otra manera de ver la salida y solicitar XML?


Comienza a funcionar si usas este método:

binding.setHandlerChain(handlerList);

Entonces, primero inicialice esta lista con

binding.getHandlerChain();

Luego agrega tu elemento a la lista y después de todo

setHandlerChain();


Si alguien se pregunta el ''por qué'' de la respuesta de @EugeneP excelente.

En la interfaz javax.xml.ws.Binding, hay el siguiente comentario.

/** * Gets a copy of the handler chain for a protocol binding instance. * If the returned chain is modified a call to <code>setHandlerChain</code> * is required to configure the binding instance with the new chain. * * @return java.util.List&lt;Handler> Handler chain */ public java.util.List<javax.xml.ws.handler.Handler> getHandlerChain();

Así que el método getHandlerChain () devuelve una copia de la lista, no la lista en sí. Así que tienes que usar setHandlerChain para actualizar la lista real.


puede agregar un registrador en su archivo log4j.xml:

<!-- Log WebService''s inputs and outputs --> <logger name="org.apache.cxf.interceptor"> <level value="INFO" /> <appender-ref ref="[YOUR_LOGGER]" /> </logger>