Je travaille sur un service SOAP 1.1 avec Apache CXF 3.1.12 (avec springboot)Apache CXF mustUnderstand booléen vs entier
Je suis en train de comprendre comment je peux forcer dans l'en-tête de générer mustUnderstand comme un entier (0 | 1) au lieu de boolean (true | false). Voir le document incorrect ci-dessous. D'après ce que je comprends, dans le savon 1.1, le vrai/faux n'est pas acceptable. Peu importe, mes clients n'aiment pas ça et je n'ai aucun contrôle sur eux.
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="true">http://...</a:Action>
</s:Header>
<s:Body>
...
</s:Body>
</s:Envelope>
C'est un service WSDL-première et il n'y a aucune mention de l'espace de noms SOAP 1.2 dans le WSDL. Mon information sur le paquet est:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://...", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
et mon point de terminaison est créé avec:
EndpointImpl endpoint = new EndpointImpl(bus,
new MyClass(), SOAPBinding.SOAP11HTTP_BINDING);
Je modifie l'en-tête mustUnderstand dans une AbstractSoapInterceptor à Phase.WRITE avec HDR-> setMustUnderstand (true), mais il encore sort comme un booléen.
Il y a un vieux problème dans JIRA à ce sujet, et est marqué comme fixé il y a longtemps: https://issues.apache.org/jira/browse/CXF-2213?jql=text%20~%20%22mustUnderstand%22
Toute aide serait appréciée.