У меня есть клиентский класс веб-службы, который устанавливает соединение с целевым сервером с помощью 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 для этого?
Спасибо за помощь.
Мне пришлось добавить следующие строки в класс, который создает запрос 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 на консоли.