next up previous
Nächste Seite: Anwendung Aufwärts: Die SOAP Nachricht Vorherige Seite: Body

Fehlerbehandlung

Eine SOAP-Nachricht kann eine ,,SOAP Fault`` Element enthalten. In ihm kann eine Fehlermeldung an den aufrufenden Client übertragen werden. Es ist auch möglich, das SOAP Fault-Element zur Übermittlung von Statusinformationen zu verwenden. Falls eine Nachricht eine SOAP Fault-Element enthält so steht es im Body der Nachricht. Eine Nachricht darf höchstens ein SOAP Fault-Element enthalten.

Hier die Fehlernachricht beim Versuch, auf ein noch nicht gestartetes Service zuzugreifen:

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
  xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
  xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <faultcode>SOAP-ENV:Server</faultcode>
      <faultstring>service 'urn:demoobj' unknown</faultstring>
      <faultactor>/soap/servlet/rpcrouter</faultactor>
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Im ,,faultcode`` wird angezeigt um was für eine Fehlerart es sich handelt. Die Fehlerklasse ,,SOAP-ENV:Server`` steht für Fehler beim Verarbeiten der SOAP-Nachricht. Jedes SOAP Fault-Element muß ein faultcode-Elemet enthalten.

Der ,,faultstring`` enthält eine Klartextfehlermeldung. Diese Meldung ist als Infomation für den Anwender gedacht, nicht zur maschinellen Auswertung. Das faultstring-Elemet ist ebenfalls zwingend erforderlich. Sinnvollerweise sollte hier eine Information über den aufgetretenen Fehler stehen.

Das Element ,,faultactor`` gibt an, wo auf dem Verarbeitungsweg der SOAP-Nachricht der Fehler aufgetrete ist.

Zusätzlich kann im SOAP Fault-Element noch ein Element Namens ,,detail`` auftauchen. Dies wird genau dann verwendet, wenn es bei der Verarbeitung von Body-Elementen zu Fehlern kommt. Beispiel zum ,,detail``-Element aus der Spezifikation:

HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
       <SOAP-ENV:Fault>
           <faultcode>SOAP-ENV:Server</faultcode>
           <faultstring>Server Error</faultstring>
           <detail>
               <e:myfaultdetails xmlns:e="Some-URI">
                 <message>
                   My application didn't work
                 </message>
                 <errorcode>
                   1001
                 </errorcode>
               </e:myfaultdetails>
           </detail>
       </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


next up previous
Nächste Seite: Anwendung Aufwärts: Die SOAP Nachricht Vorherige Seite: Body
Wolfgang Becker 2002-01-22