Prüfen, ob sich das Verhalten der SOAP-Fehlercodes und -Zeichenfolgen von Web-Services geändert hat

Diese Regel markiert Aufrufe der Methoden, die SOAP-Fehler und -Zeichenfolgen abrufen. Die Standardfehlercodes und -zeichenfolgen, die von den Laufzeitumgebungen von Web-Services zurückgegeben werden, haben sich in WebSphere Application Server Version 8 geändert.

Die folgenden Methoden werden markiert:

Die Änderungen an den Standardfehlercodes und -zeichenfolgen wurden vorgenommen, um ein potenzielles Sicherheitsrisiko in Bezug auf Web-Services, die XML-Verschlüsselung verwenden, zu beseitigen. Im Rahmen der Korrektur werden detaillierte Informationen aus allen SOAP-Fehlern entfernt, die von der Laufzeitumgebung von Web-Services generiert werden. Standardmäßig vereinheitlichen die Web-Service-Laufzeitumgebungen in Version 8 alle Fehler, die von der Laufzeitumgebung generiert werden, zu einem einzigen Fehlertyp, der den Fehlercode soapenv:Server und eine Fehlerzeichenfolge von Internal Error .

Wenn Ihre Anwendung detaillierte Informationen von den Fehlercodes und -zeichenfolgen der Laufzeitumgebung erwartet, müssen Sie Ihre Anwendung möglicherweise ändern. Sie können auch die webservices.unify.faults Angepasste Java Virtual Machine-Eigenschaft zum Ändern des Standardverhaltens. Um zum Verhalten des vorherigen Release zurückzukehren, legen Sie Folgendes fest: webservices.unify.faults in false .

Vor WebSphere Application Server Version 8 wurden standardmäßig detaillierte Informationen im Fehlercode bzw. in der Fehlerzeichenfolge zurückgegeben. Dieses Problem wurde auch in den Servicedatenströmen, einschließlich 6.0.2, 6.1, und 7.0 behoben, aber das Standardverhalten in diesen Releases bleibt unverändert. Für die Service-Releases: webservices.unify.faults hat den Standardwert false . Ändern Sie diesen Wert in true um dasselbe Verhalten wie Version 8 in diesen Releases zu erhalten.

JAX-WS-Beispiel:
< 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();
...
}


JAX-RPC-Beispiel:
< 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();
...
}

In beiden Beispielen werden Aufrufe an die getFaultCode() und getFaultString() Methoden werden markiert.

Weitere Informationen finden Sie in den folgenden Dokumenten: