Rechercher un changement de comportement dans les codes et les chaînes d'erreurs SOAP des services Web

Cette règle marque les appels des méthodes permettant d'extraire les chaînes et les erreurs SOAP. Les chaînes et les codes d'erreur par défaut renvoyés par les environnements d'exécution des services Web ont changé dans WebSphere Application Server version 8.

En particulier, les méthodes suivantes sont marquées :

Les changements des chaînes et des codes d'erreur par défaut ont été apportés pour corriger un risque de sécurité potentiel lié aux services Web utilisant le chiffrement XML. Ce correctif supprime les informations détaillées qui apparaissent dans les erreurs SOAP générées par l'environnement d'exécution des services Web. Par défaut dans la version 8, les environnements d'exécution des services Web unifient toutes les erreurs générées par l'environnement d'exécution en leur attribuant un seul type d'erreur contenant le code d'erreur soapenv:Server et la chaîne d'erreur Erreur interne.

Si votre application s'attend à ce que les chaînes ou les codes d'erreur de l'environnement d'exécution contiennent des informations détaillées, il se peut que vous deviez la modifier. Vous pouvez aussi utiliser la propriété personnalisée de la machine virtuelle Java webservices.unify.faults pour changer le comportement par défaut. Pour revenir au comportement de la version précédente, associez webservices.unify.faults à la valeur false.

Avant WebSphere Application Server version 8, le comportement par défaut consistait à renvoyer des informations détaillées dans la chaîne ou le code d'erreur. Ce problème a également été corrigé dans les flux de services, notamment 6.0.2, 6.1 et 7.0, mais le comportement par défaut dans ces éditions reste inchangé. Dans les éditions de service, webservices.unify.faults est associé à la valeur par défaut false. Remplacez cette valeur par true pour obtenir dans ces éditions le même comportement que dans la version 8.

Exemple JAX-WS :
import javax.xml.ws.soap.SOAPFaultException;
import javax.xml.ws.soap.SOAPFault;

try {
// code générant une erreur
...
} catch (SOAPFaultException e) {
SOAPFault soapFault = e.getFault();
String faultCode = soapFault.getFaultCode();
String faultString = soapFault.getFaultString();
...
}


Exemple JAX-RPC :
import javax.xml.rpc.soap.SOAPFaultException;
import javax.xml.namespace.QName;

try {
// code générant une erreur
...
} catch (SOAPFaultException e) {
QName faultCode = e.getFaultCode();
String faultString = e.getFaultString();
...
}

Dans ces deux exemples, les appels aux méthodes getFaultCode() etgetFaultString() seraient marqués.

Pour plus d'informations, voir :