Verificar uma mudança de comportamento nas sequências e códigos de falha de SOAP de serviços da web

Esta regra sinaliza as chamadas para os métodos que recuperam sequências e falhas de SOAP. As sequências e códigos de falha padrão retornados pelos ambientes de tempo de execução de serviços da web alterados no WebSphere Application Server V8.

Especificamente, os métodos a seguir são sinalizados

As mudanças nas sequências e códigos de falha padrão foram feitas para corrigir uma exposição de segurança em potencial relacionada aos serviços da web usando a criptografia XML. Como parte da correção, as informações detalhadas serão removidas de qualquer falha SOAP gerada pelo ambiente de tempo de execução de serviços da web. Por padrão, na Versão 8, os ambientes de execução de serviço da web unificam todas as falhas geradas pelo ambiente de tempo de execução para um único tipo de falha contendo um código de falha de soapenv:Server e uma sequência de falhas de Internal Error .

Se seu aplicativo espera informações detalhadas das sequências ou códigos de falha do ambiente de tempo de execução, talvez seja necessário modificar o seu aplicativo. Também é possível usar o webservices.unify.faults A propriedade customizada da máquina virtual Java para alterar o comportamento padrão Para reverter para o comportamento da liberação anterior, configure webservices.unify.faults para false .

Antes do WebSphere Application Server V8, o comportamento padrão era retornar as informações detalhadas na sequência ou código de falha. Esse problema também era corrigido nos fluxos de serviços incluindo 6.0.2, 6.1 e 7.0, mas o comportamento padrão nessas liberações permanecem inalteradas. Para as liberações de serviço, webservices.unify.faults tem um valor padrão de false . Altere esse valor para true para obter o mesmo comportamento da Versão 8 nessas liberações.

Exemplo JAX-WS:
< span class="Code"> importar javax.xml.ws.soap.SOAPFaultException;
import javax.xml.ws.soap.SOAPFault;

try {
// algum código que causa uma falha
...
} catch (SOAPFaultException e) {
SOAPFault soapFault = e.getFault();
String faultCode = soapFault.getFaultCode();
String faultString = soapFault.getFaultString();
...
}


Exemplo JAX-RPC:
< span class="Code"> import javax.xml.rpc.soap.SOAPFaultException;
import javax.xml.namespace.QName;

try {
// algum código que causa uma falha
...
} catch (SOAPFaultException e) {
QName faultCode = e.getFaultCode();
String faultString = e.getFaultString();
...
}

Em ambos os exemplos, as chamadas para o getFaultCode() e getFaultString() os métodos seriam sinalizados.

Para obter informações adicionais, veja: