[ 
http://issues.apache.org/jira/browse/XMLRPC-113?page=comments#action_12434906 ] 
            
Juha Syrjälä commented on XMLRPC-113:
-------------------------------------

I believe that the bug is in class 
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler, in method invoke()

It is currenlty (in version 3.0) following:

    private Object invoke(Object pInstance, Method pMethod, Object[] pArgs) 
throws XmlRpcException {
        try {
                return pMethod.invoke(pInstance, pArgs);
            } catch (IllegalAccessException e) {
                throw new XmlRpcException("Illegal access to method "
                                          + pMethod.getName() + " in class "
                                          + clazz.getName(), e);
            } catch (IllegalArgumentException e) {
                throw new XmlRpcException("Illegal argument for method "
                                          + pMethod.getName() + " in class "
                                          + clazz.getName(), e);
            } catch (InvocationTargetException e) {
                Throwable t = e.getTargetException();
                throw new XmlRpcException("Failed to invoke method "
                                          + pMethod.getName() + " in class "
                                          + clazz.getName() + ": "
                                          + t.getMessage(), t);
            }
        }

The last catch should be:

            } catch (InvocationTargetException e) {
                Throwable t = e.getTargetException();
          if(t instanceof XmlRpcException) {
            throw (XmlRpcException)t;
          }
                throw new XmlRpcException("Failed to invoke method "
                                          + pMethod.getName() + " in class "
                                          + clazz.getName() + ": "
                                          + t.getMessage(), t);
            }

> faultCode and faultString not working when throwing XmlRpcException on server
> -----------------------------------------------------------------------------
>
>                 Key: XMLRPC-113
>                 URL: http://issues.apache.org/jira/browse/XMLRPC-113
>             Project: XML-RPC
>          Issue Type: Bug
>          Components: Releases
>    Affects Versions: 3.0
>         Environment: Tomcat
>            Reporter: Juha Syrjälä
>
> I am trying to create fault message with specific faultCode and faultString, 
> but so far I have had little success.
> I am using XML-RPC libs from file xmlrpc-3.0-bin.tar.gz
> The method I am using on server is this:
>   public Map method(Map request) throws XmlRpcException {
>     throw new XmlRpcException(301, "My error message");
>   }
> This should generate fault message with faultCode=301 and faultString="My 
> error message".
> However, this XML is what server sends over network. Notice that faultCode is 
> 0 and not 301, and faultString has additional text appended before "My error 
> message".
> <?xml version="1.0" encoding="UTF-8"?>
> <methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions";>
> <fault>
> <value>
> <struct>
> <member>
> <name>faultString</name>
> <value>Failed to invoke method method in class MyXmlRpcClass: My error 
> message</value>
> </member>
> <member>
> <name>faultCode</name>
> <value><i4>0</i4></value>
> </member>
> </struct>
> </value>
> </fault>
> </methodResponse>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to