2012-09-23 12 views
8

मैं फ़ॉलस्ट्रिंग क्यों सेट कर सकता हूं, लेकिन क्या मैं SOAPFault में कस्टम गलती कोड सेट नहीं कर सकता? जब मैं अपवाद फेंकता हूं, तो "कोड एक्स" टेक्स्ट SoapFaultException में प्रकट नहीं होता है। कोई मुझे बता सकता है क्यों? धन्यवाद।एक SOAPFault में गलती कोड कैसे सेट करें?

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

throw new SOAPFaultException(soapFault); 

उत्तर

3

documentation से:

गलती कोड है, जो गलती के बारे में जानकारी दी, SOAP 1.1 विनिर्देश में परिभाषित कर रहे हैं। SOAP 1.1 में यह तत्व अनिवार्य है। क्योंकि गलती कोड को QName होने की आवश्यकता है क्योंकि इस विधि के setFaultCode (नाम) फ़ॉर्म का उपयोग करना बेहतर है।

faultCode - String गलती कोड सेट करने के लिए। यह फॉर्म "prefix:localName" होना चाहिए जहां उपसर्ग को नामस्थान घोषणा में परिभाषित किया गया है।

ध्यान दें कि आपकी सेटिंग में गलती कोड यह प्रारूप होना चाहिए: prefix:localName। आप सेटिंग कर रहे हैं: Code X, यही कारण है कि आप इसे नहीं देखते हैं। this विधि का उपयोग करें और सभी ठीक होना चाहिए।

3

यह निम्न उदाहरण के साथ साबुन के जवाब में गलती कोड प्राप्त करने के लिए संभव है:

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) { 
    // 
} 

मैं वापस निम्नलिखित साबुन गलती:

<?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>