Посмотреть что отправляет серверу web service comsumer

garrick

Lotus Team
26.10.2009
1 367
152
BIT
353
Есть сгенерённый дизайнером Java Web Service Consumer, который работает с SOAP web-сервисом. Как можно "посмотреть" сообщения которые он отправляет на сервер и ответы сервера?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
466
Есть сгенерённый дизайнером Java Web Service Consumer, который работает с SOAP web-сервисом. Как можно "посмотреть" сообщения которые он отправляет на сервер и ответы сервера?
перехватывать...заморачиваться кодом (успех не гарантирован ;) ) или "классически"
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
353
Ну, это же уже сгенерённый дизайнером Consumer, он вроде на IBM Axis работает - 1.4 или ещё более старой версии, как туда теперь CXF прикрутить, всё переделывать сначала? Там очень много кода, как неохота всё переписывать. А нужно "логирование", сохранение XML в файл и прикрепление файла к документу в Лотусе - что отправили/что получили. В Интернете полно примеров со всякими SOAPHandler, HandlerResolver и т.п. но непонятно как это к IBM-ским классам прикрутить, непонятно где в него вклинится можно.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
466
Ну, это же уже сгенерённый дизайнером Consumer, он вроде на IBM Axis работает - 1.4 или ещё более старой версии, как туда теперь CXF прикрутить, всё переделывать сначала? Там очень много кода, как неохота всё переписывать. А нужно "логирование", сохранение XML в файл и прикрепление файла к документу в Лотусе - что отправили/что получили. В Интернете полно примеров со всякими SOAPHandler, HandlerResolver и т.п. но непонятно как это к IBM-ским классам прикрутить, непонятно где в него вклинится можно.
ну тогда ток второй вариант - перехват трафика (со всеми сопряжёнными финтами)
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
524
Ну, это же уже сгенерённый дизайнером Consumer, он вроде на IBM Axis работает - 1.4 или ещё более старой версии, как туда теперь CXF прикрутить, всё переделывать сначала? Там очень много кода, как неохота всё переписывать. А нужно "логирование", сохранение XML в файл и прикрепление файла к документу в Лотусе - что отправили/что получили. В Интернете полно примеров со всякими SOAPHandler, HandlerResolver и т.п. но непонятно как это к IBM-ским классам прикрутить, непонятно где в него вклинится можно.
откажитесь от консумера, сгенерируйте код клиента через apache CFX, загрузите код в либу, а либу в агент.
Далее можно уже будет прикрутить хэндлеры и обрабатывать как требуется.
Агент можно так же вызывать через http, если требуется.
 
  • Нравится
Реакции: rinsk

rinsk

Lotus Team
12.11.2009
1 156
126
BIT
43
откажитесь от консумера, сгенерируйте код клиента через apache CFX, загрузите код в либу, а либу в агент.
Далее можно уже будет прикрутить хэндлеры и обрабатывать как требуется.
Агент можно так же вызывать через http, если требуется.
А можно пример ? Например выдача через агента ?Wsdl
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
524
Как бы вот:

Для генерации использовать тестовый WS из инета:
Обычный калькулятор

Вызов агента по http:
http://IP_DNS_SERVER/FULLPATH_TO_DATABASE.nsf/AGENT_NAME?OpenAgent&PARAM1=VALUE1&PARAM2=VALUE2

Вызывал на локале.
Мы давно уже сделали логгирование запроса и ответа, поэтому код как бы был.
Outbound - отправленное сообщение, Inbound - входящее, то бишь ответ в синхроне.
1642612816166.png
1642612833586.png
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
353
откажитесь от консумера, сгенерируйте код клиента через apache CFX, загрузите код в либу, а либу в агент.
Далее можно уже будет прикрутить хэндлеры и обрабатывать как требуется.
Агент можно так же вызывать через http, если требуется.
Такой ответ я и сам знаю, мог бы и не спрашивать.
Спросил потому, что мне такое не нравится.
:)
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
524
Обработать в агенте параметр "?wsdl"
Вызвать агент через ?wsdl нельзя. Можно сделать подмену на уровне редиректа, чтобы такие запросы переходили в ?OpenAgent&req=wsdl , но не более, а в агенте уже описывать что требуется.
Опять же не понимаю, зачем это для Consumer, он же на выход работает, а не на вход.
То есть его использовать можно только из домино.

Спросил потому, что мне такое не нравится.
Альтернатива - выводить это из Domino, либо брать либы, которые отвечают за реализацию ws в Domino (websvc.jar в lib/ext), делать на их основе свою версию.
Потом в консумере уже пытаться подцепить новое и использовать.
ИМХО: вертел я этот хулахуп на жерде, выводить из Domino норм идея, а вот эти танцы - ну нафиг.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
353
Вызвать агент через ?wsdl нельзя. Можно сделать подмену на уровне редиректа, чтобы такие запросы переходили в ?OpenAgent&req=wsdl , но не более, а в агенте уже описывать что требуется.
Опять же не понимаю, зачем это для Consumer, он же на выход работает, а не на вход.
Человек спросил - я ответил. Конечно для consumer - это не имеет смысла. А почему просто ?wsdl нельзя? Проверить наличие параметра с таким именем... Или без знака равно не пройдёт?

...а, понял - там же уже есть знак вопроса в ?OpenAgent
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!