Sprawdzenie, czy nie zmieniło się zachowanie w kodach i łańcuchach błędów SOAP usług WWW

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ługi Web Service ujednolicają wszystkie błędy wygenerowane przez środowisko wykonawcze do pojedynczego 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ć webservices.unify.faults Właściwość niestandardowa wirtualnej maszyny języka Java służąca do zmiany domyślnego zachowania. Aby przywrócić zachowanie poprzedniej wersji, należy ustawić webservices.unify.faults do 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: webservices.unify.faults ma wartość domyślną false . Zmień tę wartość na true aby uzyskać takie samo zachowanie jak w wersji 8 w tych wydaniach.

Przykład dla JAX-WS:
< span class="Code" > 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();
...
}


Przykład dla JAX-RPC:
< span class="Code" > 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 getFaultCode() oraz getFaultString() Metody zostaną oznaczone flagą.

Dodatkowe informacje na ten temat: