2012-09-23 7 views
8

¿Por qué puedo establecer FaulString, pero no puedo establecer un código de falla personalizado en un SOAPFault? Cuando lanzo la excepción, el texto "Código X" no aparece en SoapFaultException. Alguien podría decirme por qué? Gracias.¿Cómo configurar un faultCode en un SOAPFault?

SOAPFault soapFault = SOAPFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL).createFault(); 
soapFault.setFaultString("String Y") 
soapFault.setFaultCode("Code X"); 

throw new SOAPFaultException(soapFault); 

Respuesta

3

De documentation:

Los códigos de avería, que dan información acerca de la falla, se definen en la especificación SOAP 1.1. Este elemento es obligatorio en SOAP 1.1. Debido a que se requiere que el código de falla sea un QName, es preferible usar la forma setFaultCode (Name) de este método.

faultCode - a String dando el código de falla para establecer. Debe ser de el formulario "prefix:localName" donde el prefijo se ha definido en una declaración de espacio de nombres .

Observe que el código de falla que ha configurado debe tener este formato: prefix:localName. Está configurando: Code X, es por eso que no lo ve. Use el método this y todo debería estar bien.

3

Es posible conseguir el código de fallo en la respuesta de jabón con el siguiente ejemplo:

String faultString = "String Y"; 
String faultCodeValue = "Code X"; 
QName faultCode = new QName("nameSpaceURI", faultCodeValue); 
SOAPFault soapFault = null; 
try { 
    soapFault = SOAPFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL).createFault(faultString, faultCode); 
    throw new javax.xml.ws.soap.SOAPFaultException(soapFault); 
} catch (SOAPException e1) { 
    // 
} 

me sale el siguiente error de SOAP vuelta:

<?xml version="1.0" ?> 
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope" xmlns=""> 
     <faultcode xmlns:ns0="nameSpaceURI">ns0:Code X</faultcode> 
     <faultstring>String Y</faultstring> 
     </S:Fault> 
    </S:Body> 
</S:Envelope> 
Cuestiones relacionadas