SOAP Fault afhandeling met CXF

Dit is een TECHBLOG ontwikkeld dóór techneuten vóór techneuten. Het geeft je inzichten en concrete handvatten waarmee je zelf uit de voeten kan. Virtual Sciences is een integratie kennishuis met ruim 70 IT-professionals. Intern delen we onze IT-kennis, maar ook jou willen we inspireren.

7 juni 2021   |   Blog   |   Door: Virtual Sciences Conclusion

Deel

Techblog Conclusion - SOAP FAULT AFHANDELING MET CXF

In mijn vorige blog over hoe een SOAP Service aan te roepen in een Fuse/Camel integratie, gebruik makend van het CXF framework. Maar hoe moet je nu met SOAP Faults om gaan die kunnen worden teruggestuurd?

Het uitvoeren van een service kan resulteren in een fout. Er zijn verscheidene typen errors. De service aanroep kan fallen, bijvoorbeeld om dat de service down is of vanwege een netwerk probleem. Maar als de service aanroep is bedoeld om een order op te vragen, met een invalide identificatie, faalde de service dan? Ik denk eigenlijk van niet: de service deed zijn taak prima, het werkte naar behoren. Het niet kunnen vinden van een niet bestaande order is een prima antwoord.

Er zijn verscheidene manieren om een dergelijk antwoord aan de service consumer terug te geven.  De service zou kunnen antwoorden met een leeg respons-bericht. Of een bericht met een status code dat een “niet-gevonden” situatie aangeeft. In dergelijke gevallen definieert het service ontwerp een “niet-gevonden” situatie als een fatsoenlijke uitkomst. Een andere mogelijkheid is om te antwoorden met een SOAP Fault. De term Fault kan misleidend zijn. Je kunt de “niet-gevonden” situatie  als een exceptie definieren. Want hoe kwam de service consumer op deze specifieke invalide identificatie? Er was kennelijk een  functionele reden om te vragen om een order met dat id, dus de consumer heeft dat order id blijkbaar van een eerdere integratie.

Toch, als er wordt gevraagd om een order met een ID dat valide zou zijn, maar het resulteerde niet in een feitelijke order, dan deed de service zijn taak naar behoren. Een SOAP Fault is in dit geval een prima respons en betekent dus niet dat de service heeft gefaald. En daaom kan een SOAP Fault worden gebruikt voor zowel zogenaamde technische als functionele (business) excepties.

 

Voor mij is bovenstaand voorbeeld belangrijk, omdat het uitlegt waarom een  SOAP Fault response niet zal leiden tot een Exceptie in Camel. Het zal dus gecontroleerd moeten worden.

Lees meer over de uitwerking hiervan op ons Medium platform, geschreven dóór techneuten, vóór techneuten.