Zkontrolovat změnu chování v kódech poruchy a řetězcích SOAP webových služeb

Toto pravidlo označí volání metod, které načítají poruchy SOAP a řetězce. Výchozí kód poruchy a řetězce vrácené běhovými prostředími webových služeb se v produktu WebSphere Application Server verze 8 změnily.

Konkrétně jsou označeny následující metody

Změny výchozích kódů poruchy a řetězců byly provedeny za účelem opravy potenciální expozice zabezpečení související s webovými službami pomocí šifrování kódu XML. V rámci opravy jsou podrobné informace odebrány z jakékoli poruchy SOAP generované běhovým prostředím webových služeb. Standardně ve verzi 8 sjednocují běhová prostředí webových služeb všechny poruchy generované běhovým prostředím na jeden typ poruchy obsahující kód poruchy soapenv:Server a řetězec poruchy Interní chyby.

Pokud aplikace očekává podrobné informace z kódů poruchy nebo řetězců běhového prostředí, může být nutné upravit aplikaci. Výchozí chování lze změnit také pomocí přizpůsobené vlastnosti prostředí JVM webservices.unify.faults. Chcete-li se vrátit k chování předchozího vydání, nastavte webservices.unify.faults na false.

Před verzí serveru WebSphere Application Server 8 je výchozím chováním vrácení podrobných informací v kódu poruchy nebo řetězci. Tento problém byl opraven také v proudech služeb včetně verzí 6.0.2, 6.1 a 7.0, ale výchozí chování v těchto vydáních zůstává beze změny. Pro vydání služby má vlastnost webservices.unify.faults výchozí hodnotu false. Změňte tuto hodnotu na true, chcete-li dosáhnout stejného chování jako verze 8 v těchto vydáních.

Příklad JAX-WS:
import javax.xml.ws.soap.SOAPFaultException;
import javax.xml.ws.soap.SOAPFault;

try {
// nějaký kód, který způsobí poruchu
...
} catch (SOAPFaultException e) {
SOAPFault soapFault = e.getFault();
String faultCode = soapFault.getFaultCode();
String faultString = soapFault.getFaultString();
...
}


Příklad JAX-RPC:
import javax.xml.rpc.soap.SOAPFaultException;
import javax.xml.namespace.QName;

try {
// nějaký kód, který způsobí poruchu
...
} catch (SOAPFaultException e) {
QName faultCode = e.getFaultCode();
String faultString = e.getFaultString();
...
}

V obou těchto příkladech by byla označena volání metod getFaultCode() a getFaultString().

Další informace viz: