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. Ve výchozím nastavení ve verzi 8 běhová prostředí webové služby sjednocují všechny poruchy generované běhovým prostředím na jediný typ poruchy obsahující kód poruchy soapenv:Server a chybový řetězec Internal Error .

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. Můžete také použít webservices.unify.faults Java pro změnu výchozího chování. Chcete-li se vrátit k chování předchozí verze, nastavte webservices.unify.faults do 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. V případě uvolnění služby: webservices.unify.faults má výchozí hodnotu false . Změňte tuto hodnotu na true abyste získali stejné chování jako verze 8 v těchto vydáních.

Příklad JAX-WS:
< span class="Code" > 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:
< span class="Code" > 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 volání na getFaultCode() a getFaultString() metody by byly označeny.

Další informace viz: