axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Sutter <Michael.Sut...@ipe.fzk.de>
Subject Re: custom error message with c server
Date Wed, 14 Nov 2007 12:00:22 GMT
Hello Dimuthu,

thanks for your reply. I tested it - but it also throws no exception in 
the Java client. I only see the null return value in the client. In the 
service implementation I used:

AXIS2_ERROR_SET(...)
return NULL;

to use the on_fault method of axis2_svc_skel_TestService. Is this right?
In the on fault method only
ns1 = axiom_namespace_create(env, " 
http://www.w3.org/2003/05/soap-envelope", "ns1");
works. If I use the other way the server crashs with Segmentation fault.
The soap message of the response is:

<soapenv:Envelope 
xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header/><soapenv:Body><ns1:fault

xmlns:ns1=" http://www.w3.org/2003/05/soap-envelope">My error message to 
be thrown!</ns1:fault></soapenv:Body></soapenv:Envelope>

where I can see the fault - but maybe there is still something wrong?

But I have another question left. When I use this way I only can send 
one exception to the client - defined in the on fault method? There is 
no direct way to send different exceptions to the client depending on 
the state of the service? When I want to do such I think I have to use 
the way Samisa told?

Regards Michael

Dimuthu Gamage wrote:
> 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.
>
>     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 
> <mailto: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
>     <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
>     <mailto:axis-c-user-unsubscribe@ws.apache.org>
>     > For additional commands, e-mail: axis-c-user-help@ws.apache.org
>     <mailto:axis-c-user-help@ws.apache.org>
>     >
>
>     ---------------------------------------------------------------------
>     To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>     <mailto:axis-c-user-unsubscribe@ws.apache.org>
>     For additional commands, e-mail: axis-c-user-help@ws.apache.org
>     <mailto: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