Запись SOAP-запроса / ответов в файл журнала

1

У меня есть клиентский класс веб-службы, который устанавливает соединение с целевым сервером с помощью URL-адреса wsdl. Этот класс использует JaxWsProxyFactoryBean и WSS4JOutInterceptor для установления безопасного соединения. Я хотел бы увидеть запрос SOAP, сгенерированный моим кодом и ответом, сгенерированным с сервера.

Я попытался включить следующие параметры, когда я запускаю свою банку из командной строки

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

Я использую log4j для ведения журнала, и все сообщения записываются в пользовательский файл. Как я могу сбросить SOAP-запрос/ответы в этот же файл с помощью параметров командной строки?

Нужно ли мне делать какие-либо изменения кода для класса Client для этого?

Спасибо за помощь.

  • 0
    Проверьте stackoverflow.com/questions/1945618/…
  • 0
    Да, я сначала проверил этот пост и попытался ответить на вопрос г-на Напика. Я воздерживаюсь от внесения изменений в код, если только это не единственный способ добиться этого.
Показать ещё 1 комментарий
Теги:
web-services
wsdl
wss4j
jax-ws

1 ответ

1
Лучший ответ

Мне пришлось добавить следующие строки в класс, который создает запрос SOAP:

LoggingInInterceptor loggingInInterceptor = new LoggingInInterceptor();
loggingInInterceptor.setPrettyLogging(true);
LoggingOutInterceptor loggingOutInterceptor = new LoggingOutInterceptor();
loggingOutInterceptor.setPrettyLogging(true);
factory.getInInterceptors().add(loggingInInterceptor);
factory.getOutInterceptors().add(loggingOutInterceptor);

Мне также пришлось обновить мой клиент cxf до последней версии от Apache, т.е. 2.7.12. Это напечатало заголовки SOAP на консоли.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню