Friday, January 21, 2011

Apache XML-RPC Exception Handling

What is the easiest way to extract the original exception from an exception returned via Apache's implementation of XML-RPC?

  • According to the XML-RPC Spec it returns the "fault" in the xml.

    Is this the "Exception" you are referring to or are you refering to a Java Exception generated while making the XML-RPC call?

    Fault example

    HTTP/1.1 200 OK
    Connection: close
    Content-Length: 426
    Content-Type: text/xml
    Date: Fri, 17 Jul 1998 19:55:02 GMT
    Server: UserLand Frontier/5.1.2-WinNT
    
    <?xml version="1.0"?>
    <methodResponse>
      <fault>
        <value>
          <struct>
          <member>
            <name>faultCode</name>
            <value><int>4</int></value>
          </member>
          <member>
            <name>faultString</name>
            <value>
              <string>Too many parameters.</string>
            </value>
          </member>
          </struct>
        </value>
      </fault>
    </methodResponse>
    
    From ScArcher2
  • It turns out that getting the cause exception from the Apache exception is the right one.

    } catch (XmlRpcException rpce) {
        Throwable cause = rpce.getCause();
        if(cause != null) {
            if(cause instanceof ExceptionYouCanHandleException) {
                handler(cause);
            }
            else { throw(cause); }
        }
        else { throw(rpce); }
    }
    

0 comments:

Post a Comment