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 di runtime del servizio Web uniscono tutti gli errori generati dall'ambiente di runtime in un singolo tipo di errore contenente un codice di errore di soapenv:Server e una stringa di errore di Internal Error .

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 webservices.unify.faults Proprietà personalizzata della macchina virtuale Java per modificare il comportamento predefinito. Per ripristinare il funzionamento della release precedente, impostare webservices.unify.faults a 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, webservices.unify.faults ha un valore predefinito di false . Modificare tale valore in true per ottenere la stessa funzionalità della Versione 8 in tali release.

Esempio JAX-WS:
< span class="Code"> importa 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:
< span class="Code"> importa 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 questi esempi, le chiamate al getFaultCode() e getFaultString() i metodi verranno contrassegnati.

Per ulteriori informazioni, consultare: