Ricerca una modifica del comportamento nelle stringhe e dei codici di errore SOAP dei servizi Web

Questa regola contrassegna le chiamate ai metodo che richiamano stringhe ed errori SOAP. Le stringhe ed i codici di errore predefiniti restituiti dagli ambienti runtime dei servizi Web sono stati modificati in WebSphere Application Server V8.

In particolare, vengono contrassegnati i seguenti metodi

Le modifiche alle stringhe ed ai codici di errore predefiniti sono state apportate per correggere una potenziale esposizione della sicurezza relativa ai servizi Web che utilizzano la codifica XML. Come parte della correzione, le informazioni dettagliate sono rimosse da qualsiasi errore SOAP generato dall'ambiente runtime dei servizi Web. Per impostazione predefinita, nella Versione 8 gli ambienti runtime del servizio Web raggruppano tutti gli errori generati dall'ambiente runtime in un singolo tipo di errore che contiene il codice di errore soapenv:Server e la stringa di errore Errore interno.

Se l'applicazione prevede informazioni dettagliate dalle stringhe o dai codici di errore dell'ambiente runtime, potrebbe essere necessario modificare l'applicazione. È anche possibile utilizzare la proprietà personalizzata JVM (Java virtual machine) webservices.unify.faults per modificare il comportamento predefinito. Per ripristinare il comportamento delle versioni precedenti, impostare webservices.unify.faults su false.

Prima di WebSphere Application Server V8, per impostazione predefinita, le informazioni dettagliate venivano restituite nella stringa o nel codice di errore. Questo problema è stato corretto anche nei flussi di servizi che comprendono 6.0.2, 6.1 e 7.0, ma il comportamento predefinito in tali release è rimasto invariato. Per le release di servizio, il valore predefinito di webservices.unify.faults è false. Impostare tale valore su true per ottenere in tali release lo stesso comportamento della Versione 8.

Esempio 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();
...
}


Esempio 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();
...
}

In entrambi tali esempi, le chiamate ai metodi getFaultCode() e getFaultString() vengono contrassegnate.

Per ulteriori informazioni, consultare: