Verificaţi modificarea de comportament în codurile de eroare şi şirurile SOAP pentru servicii web

Această regulă semnalează apelurile metodelor care extrag erorile şi şirurile SOAP. Valoarea implicită a codurilor de eroare şi şiruri returnate de mediile runtime de servicii web s-a modificat în WebSphere Application Server V8.

Mai precis, sunt semnalate următoarele metode

Au fost modificate codurile de eroare şi şirurile implicite, pentru a rezolva o posibilă expunere de securitate privind serviciile web care utilizează criptarea XML. Ca parte a acestei corecţii, informaţiile detaliate sunt înlăturate din eroarea SOAP generată de mediul runtime pentru servicii web. În mod implicit în versiunea 8, mediile de rulare a serviciului web unifică toate defecțiunile generate de mediul de rulare la un singur tip de defect care conține un cod de eroare al soapenv:Server și un șir de falie de Internal Error .

Dacă aplicaţia dumneavoastră aşteaptă informaţii detaliate de la codurile de eroare sau şirurile mediului runtime, poate fi necesar să vă modificaţi aplicaţia. Puteți utiliza, de asemenea, webservices.unify.faults Java a schimba comportamentul implicit. Pentru a reveni la comportamentul de eliberare anterior, set webservices.unify.faults la false .

Înainte de WebSphere Application Server V8, comportamentul implicit era de a returna informaţii detaliate în codul de eroare sau în şir. Această problemă a fost rezolvată şi în fluxurile de servicii cu 6.0.2, 6.1 şi 7.0, dar comportamentul implicit din aceste ediţii rămâne nemodificat. Pentru comunicările de serviciu, webservices.unify.faults are o valoare implicită false . Schimba această valoare la true pentru a obține același comportament ca versiunea 8 în aceste versiuni.

Exemplu JAX-WS:
< span class="Code" > import javax.xml.ws.soap.SOAPFaultException
import javax.xml.ws.soap.SOAPFault;

try {
// some code that causes a fault
...
} catch (SOAPFaultException e) {
SOAPFault soapFault = e.getFault();
String faultCode = soapFault.getFaultCode();
String faultString = soapFault.getFaultString();
...
}


Exemplu JAX-RPC:
< span class="Code" > import javax.xml.rpc.soap.SOAPFaultException;
import javax.xml.namespace.QName;

try {
// some code that causes a fault
...
} catch (SOAPFaultException e) {
QName faultCode = e.getFaultCode();
String faultString = e.getFaultString();
...
}

În ambele exemple, apelurile către getFaultCode() și getFaultString() Metodele ar fi marcate.

Pentru informaţii suplimentare, consultaţi: