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