Ta reguła oznacza flagą wywołania metod, które pobierają łańcuchy i błędy SOAP. Domyślne kody błędów i łańcuchy zwracane przez środowiska wykonawcze usług WWW zostały zmienione w produkcie WebSphere Application Server 8.
W szczególności oznaczane są następujące metody:
Zmiany w domyślnych kodach błędów i łańcuchach błędów zostały wprowadzone w celu naprawienia potencjalnego ryzyka związanego z zabezpieczeniami usług WWW za pomocą szyfrowania XML. W ramach poprawki szczegółowe informacje są usuwane z każdego błędu SOAP generowanego przez środowisko wykonawcze usług WWW. Domyślnie w wersji 8 środowiska wykonawcze usług WWW ujednolicają wszystkie błędy generowane przez środowisko wykonawcze do jednego typu błędu zawierającego kod błędu soapenv:Server i łańcuch błędu Internal Error.
Jeśli aplikacja oczekuje szczegółowych informacji z kodów lub łańcuchów błędów środowiska wykonawczego, konieczne może być zmodyfikowanie aplikacji. Można również użyć właściwości niestandardowej wirtualnej maszyny języka Java webservices.unify.faults w celu zmiany domyślnego zachowania. Aby przywrócić zachowanie z poprzedniej wersji, należy ustawić właściwość webservices.unify.faults na wartość false.
W wersjach wcześniejszych niż WebSphere Application Server 8 domyślne zachowanie polega na zwrocie szczegółowych informacji w kodzie lub łańcuchu błędu. Ten problem został rozwiązany również w strumieniach usług, w tym w wersji 6.0.2, 6.1 i 7.0, ale zachowanie domyślne w tych wersjach pozostaje niezmienione. W przypadku wydań serwisowych właściwość webservices.unify.faults ma wartość domyślną false. Należy zmienić tę wartość na true, aby w tych wydaniach uzyskać takie samo zachowanie jak w wersji 8.
Przykład dla JAX-WS:|
import javax.xml.ws.soap.SOAPFaultException; import javax.xml.ws.soap.SOAPFault; try { // kod powodujący błąd ... } 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 { // kod powodujący błąd ... } catch (SOAPFaultException e) { QName faultCode = e.getFaultCode(); String faultString = e.getFaultString(); ... } |
W obu tych przykładach wywołania metod getFaultCode() i getFaultString() zostaną oznaczone flagą.
Dodatkowe informacje na ten temat: