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 runtime pentru servicii web unifică toate erorile generate într-un singur tip de eroare, ce conţine codul de eroare soapenv:Server şi şirul implicit 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. De asemenea, puteţi utiliza proprietatea de personalizare a maşinii virtuale Java webservices.unify.faults pentru a schimba comportamentul implicit. Pentru reveni la comportamentul din ediţia anterioară, setaţi 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 aceste ediţii de servicii, webservices.unify.faults are valoarea implicită false. Modificaţi valoarea la true pentru ca în ediţiile respective să obţineţi acelaşi comportament ca în Versiunea 8.

Exemplu JAX-WS:
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:
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 metodelor getFaultCode() şi getFaultString() vor fi semnalate.

Pentru informaţii suplimentare, consultaţi: