Hi,
I have attached the edited skel code (not the original generated one), and a
java client which throws the exception as c service send a fault.


Thanks
Dimuthu

On Nov 14, 2007 5:30 PM, Michael Sutter <[EMAIL PROTECTED]> wrote:

> 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 <[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]
>
>

Attachment: sample.tar.bz2
Description: BZip2 compressed data

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to