Aujourd’hui, j’ai eu une drôle de mésaventure avec Oracle Service Bus : je dois pour la réalisation d’un flux, appeler un web service. Mon développement se passe à merveille, réalisation des XQuery, ProxyServices, et bien sur mon Business Service qui va appeler mon Web Service …
Au moment de tester, une erreur est survenue … le message de retour du web service peu évocateur :
SOAP-ENV:Client Le message XML est absent du paquet SOAP.
Évidemment recherche dans les logs avant l’envoi de OSB, le message est correct … en revanche.. pas moyen d »accéder aux logs côté web service; il s’agit d’une boite noire et on ne sait pas ce qu’il se passe à l’intérieur … Voilà bien ma veine …
Investigation : un test avec SOAPUI du message envoyé depuis OSB est quand à lui validé par le Web Service.
Bien … le problème vient de OSB ! On avance, mais maintenant à savoir où …
Commençons par le business service, redécouvrons les paramétrages au niveau de Eclipse. Il y a des options à cocher à décocher … et … ah tiens … il y a un menu fermé au niveau de l’onglet HTTP Transport.
Pourquoi la case « use chunked streaming mode » est-elle cochée ? Décochons cette case et retestons… Ah ça fonctionne ! le web service me renvoie un message plutôt accueillant !
Quelle est l’explication ? C’est simple en fait : ce mode activé par défaut permet d’envoyer le message par morceaux … et comme du côté serveur le keep alive est désactivé (et oui, on joue la sécurité 😉 ), la connexion est donc perdue entre deux morceaux de messages : ceci explique cela !
Pensez donc à décocher cette case :