axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dimuthu Gamage" <dimut...@gmail.com>
Subject Re: custom error message with c server
Date Tue, 13 Nov 2007 14:11:58 GMT
Hi Micheal,

Your set_custom_error function only write the error message to the log file,
and not to the soap message, so to send a custom soap fault you have to
manually edit the axis2_svc_skel_TestService_on_fault. Please edit it as the
following and test.

Java doesn't throw exception because the fault element is in wrong
namespace. So It is corrected here.
<http://www.w3.org/2003/05/soap-envelope>
    axiom_node_t* AXIS2_CALL
    axis2_svc_skel_TestService_on_fault(axis2_svc_skeleton_t *svc_skeleton,
                  const axutil_env_t *env, axiom_node_t *node)
    {
        axiom_node_t *error_node = NULL;
        axiom_element_t *error_ele = NULL;
        axiom_namespace_t *ns1 = NULL;

        /* you can use either of following method to get the namespace */
        ns1 = axiom_namespace_create(env, "
http://www.w3.org/2003/05/soap-envelope",
                                                   "ns1");

        /* or extract the samenmespace as the parent */

        ns1 = axiom_element_get_namespace(
                    axiom_node_get_data_element(node, env),
                    env,
                    node);

        error_ele = axiom_element_create(env, node, "fault", ns1,
                        &error_node);
        axiom_element_set_text(error_ele, env, "*Whatever your custom faul*
t",
                        error_node);
        return error_node;
    }

Thanks
Dimuthu


On Nov 13, 2007 4:33 PM, Michael Sutter <Michael.Sutter@ipe.fzk.de> wrote:

> Hello,
>
> I read your links but they don't solved my problem. Maybe I've done
> something wrong - so I explain exactly what I'm doing. In the service I
> implemented what I've found in Jira AXIS2C-678
> (
> https://issues.apache.org/jira/browse/AXIS2C-678?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
> )
> and the echo example of the c server implementation. I implemented a
> custom error message method:
>
>  void set_custom_error(const axutil_env_t *env, axis2_char_t
> *error_message)
>        {
>          axutil_error_set_error_message(env->error, error_message);
>          AXIS2_ERROR_SET(env->error, AXIS2_ERROR_LAST + 1, AXIS2_FAILURE);
>        }
>
> and call it from the service method. But then there is no custom error
> message delivered to the client. I only found the custom message in the
> log file of the axis server where it is not reachable from the client. I
> also monitored the SOAP messages and the custom error message is not
> inside the response:
>
> <soapenv:Envelope
> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope
> "><soapenv:Header/><soapenv:Body><fault>TestService|http://auger.fzk.org
> failed</fault></soapenv:Body></soapenv:Envelope>
>
> With this response message the java client throws no exception. I found
> that the response is exactly what the on_fault method of the service
> creates.
>
> I also read the link from Samisa
> (
> http://www.nabble.com/Help-needed-on-building-custom-soap-fault-in-axis2c-tf4538948.html#a13053097
> )
> but it has another content - I think. In the link the wsdl has defined
> two exceptions and the author wanted to know how to use them. The
> solution was to implement them in the on_fault method.
>
> Now to my questions: Have I done something wrong in the implementation
> of the service or is it not possible to send custom error messages to
> the client with my custom error method? Or have I always to define the
> exceptions in the wsdl and implement them in the on_fault method of the
> service?
>
> I have attached my service - maybe someone can help me.
>
> Kind regards
> Michael
>
> Samisa Abeysinghe wrote:
> > Subra A Narayanan wrote:
> >> Michael,
> >>
> >> If you are setting the soap fault correctly on your server side, your
> >> java client when it receives the soap response back with the soap
> >> fault in it, should automatically throw an exception. You can then
> >> retrieve the exception using ex.message.
> >>
> >> May be someone from the Axis2 team can correct me if I am wrong.
> >>
> > You are absolutely correct.
> > BTW, please follow this thread for further information:
> >
> http://www.nabble.com/Help-needed-on-building-custom-soap-fault-in-axis2c-tf4538948.html#a13053097
> >
> >
> > Thanks,
> > Samisa...
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>

Mime
View raw message