Instrumentacja SOAP

1

Hej,
mam problem z instrumentacją requestów do serwisu SOAP. Totalnie nie znam SOAP-a, więc wiem o nim tyle ile nauczyłem się pobieżnie przy szukaniu rozwiązania problemu. Otóż próbuję jakoś taceować requesty do jednego serwisu SOAP. W miejscu gdzie tworzę WebServiceTemplate dodałem inteceptor, w którym tworzę nowy span, wyciągam z niego traceId i spanId, dorzucam je do headera SOAPa, dorzucam je do MDC, ale... nie wiem co zrobić po drugiej stronie. Na Stacku jest jakiś przykład z implementacją OncePerRequestFilter, ale totalnie nie widzę miejsca, gdzie taki Filter jest wołany. Po stronie SOAPa mam - dla mnie - totalnie nieprzystępny kod wygenerowany chyba z WDSLa (mogę się mylić w nomenklaturze - tak jak mówię, jest to dla mnie obce, ale już wyrywam włosy z głowy). W każdym razie moje rozwiązanie nie działa, a coś na wzór tego tutaj: https://stackoverflow.com/a/71403869/8115355 nie wiem gdzie mógłbym dokleić.

Czy komuś z was udało się na potrzeby traceowania instrumentować SOAP serwisy?

2

OncePerRequestFilter jest częścią Springa, więc jest wstrzykiwany w łańcuch wywołań filtrów.
Wrzuć kod z którym masz problem, bo z opisu trudno coś wywnioskować

0

W miejscu gdzie tworzę WebServiceTemplate dodałem inteceptor, w którym tworzę nowy span, wyciągam z niego traceId i spanId, dorzucam je do headera SOAPa, dorzucam je do MDC, ale... nie wiem co zrobić po drugiej stronie.

Z tego co pamiętam, to trzeba wygenerować klienta/klientów z WSDLa w obu przypadkach - czyli po stronie serwera i po stronie klienta - muszą się zgadzać kontrakty, inaczej klapa. Znaczy się można robić "reverse engineering", ale nie wiem czy gra warta świeczki.

1

Ale co ty w zasadzie chcesz zrobić?
Instrumentacja - In the context of computer programming, instrumentation refers to the measure of a product's performance, in order to diagnose errors and to write trace information.[1] Instrumentation can be of two types: source instrumentation and binary instrumentation. https://en.wikipedia.org/wiki/Instrumentation_(computer_programming)

W sensie chcesz dodać dane do logowania? No to musisz dodać to do WLSDa i przegenerowac klasy a nie ręcznie rzeźbić. Albo dodać to do klas serwera z których jest generowany WSLD i przegenorować klienta. Już nie pamiętam za dobrze. Po to są te generatory (tworzace straszny kod), żeby już potem ręcznie nie modyfikować tego co zostało wygenerowane

1 użytkowników online, w tym zalogowanych: 0, gości: 1