Hello Michael, > 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:
Well, couldn't this have something to do with the Java Client? (If I'm wrong, someone please correct me.) > > 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> > Wont you get the response you mentioned above in your Java Client? If so, you can extract the fault that is returned. The fault is, <ns1:fault xmlns:ns1=" http://www.w3.org/2003/05/soap-envelope">My error message to be thrown!</ns1:fault> If you have XML processing capabilities in your Java Client, extracting the error wouldn't be that much of work. > 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? I think Samisa's way seems to be better. Regards, Senaka > > 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 <[EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]>> 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: [EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]> >> > For additional commands, e-mail: [EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]> >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]> >> For additional commands, e-mail: [EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]> >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
