RE: Sending faults from server
Thanks Samisa, So... is there a work-around of some kind? I'd like to put this in production in the project I'm working on, but need to be able to send back faults. Is a better approach to use Java Axis for the server? Thanks, Ian -Original Message- From: Samisa Abeysinghe [mailto:[EMAIL PROTECTED] Sent: May 6, 2005 2:16 AM To: Apache AXIS C User List Subject: Re: Sending faults from server This seems to be a bug. SOAP faults on the server side are not well tested. On client side, there has been some testing. I also have come across in the past, where the server sends faults in invalid formats. Hence, this needs be fixed. Samisa... On Thu, 2005-05-05 at 20:35, Ian Harder wrote: > Linux Mandrake 10.0 > > I've got a web service that needs to send a fault back under some > conditions. > > It appears that the sample files for version 1.5 don't work, and neither > does my app (undeclared namespace prefix in the fault message). I suspect > this may be a bug, since the sample doclitfault fails in the same way as my > webserver. The server send back an invalid fault message and the client > segfaults on it. > > I asked this question on the dev list, but don't know if it got through... I > don't see a record of it, and haven't had a response. > > Assuming this is a bug, is there a workaround? I'd like to be able to send > a message back to the client with some informative text, plus an error code > if possible. > > Thanks > Ian Harder > > P.S. For reference, here are the doclitfault request and fault messages. > Note the undeclared prefix ns1 in the fault detail. > > ---request--- > POST /axis/doclitfault HTTP/1.1 > Host: localhost:80 > Content-Type: text/xml; charset=UTF-8 > SOAPAction: "doclitfault#div" > Content-Length: 387 > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; > xmlns:xsd="http://www.w3.org/2001/XMLSchema"; > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";> > > http://soapinterop.org";> > 2 > 0 > > > > > ---fault--- > HTTP/1.1 200 OK > Date: Thu, 05 May 2005 20:31:26 GMT > Server: Apache-AdvancedExtranetServer/2.0.48 (Mandrake Linux/6.8.100mdk) > mod_ssl/2.0.48 OpenSSL/0.9.7c PHP/4.3.4 > Content-Length: 633 > Content-Type: text/xml > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; > xmlns:xsd="http://www.w3.org/2001/XMLSchema"; > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";> > > > AxisC++ Faultcode > Custom Out of bound exception > server name:listen port > Division by zero > exception > 1 > 10.52 > > > > > -- Samisa Abeysinghe <[EMAIL PROTECTED]> Virtusa Corporation
RE: Newbie questions and some weird behavior
>One thing to figure out is to know whether the error is in generated >code or in the user written code. Will have to generate the code and >see. Okay. There's not much code, though. This is a trivial test of the service, and all it does is print out the input to a log file, copy back the input params as outputs and log them. The logged stuff looks ok: Here's the code: void HUB_TO_HUB::Hub_Request(xsd__string Value0, xsd__string Value1, xsd__string Value2, xsd__string Value3, xsd__string Value4, xsd__string Value5, xsd__string Value6, xsd__string Value7, AXIS_OUT_PARAM xsd__string *OutValue0, AXIS_OUT_PARAM xsd__string *OutValue1, AXIS_OUT_PARAM xsd__string *OutValue2, AXIS_OUT_PARAM xsd__string *OutValue3, AXIS_OUT_PARAM xsd__string *OutValue4, AXIS_OUT_PARAM xsd__string *OutValue5) { chartimestamp[100]; time_t clock; struct tm *tm; FILE*file; file = fopen("/home/rob/hub2hub/server/log", "w+"); fprintf(file, "Input:\n" " TO_TP=%s\n" " FROM_TP=%s\n" " TO_HUB=%s\n" " FROM_HUB=%s\n" " UID=%s\n" " APIKEY=%s\n" " ROUTING=%s\n" " MESSAGE=%s\n", Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7); // Pass back caller's UID. *OutValue0 = Value4; // Pass back caller's FROM_TP as TO_TP. *OutValue1 = Value0; // Pass our hub ID as FROM_TP *OutValue2 = "ABCD-EFGH-IJKL-MNOP"; // Force status code of 0 (SUCCESS) for now *OutValue3 = "0"; *OutValue4 = "SUCCESS"; // Send timestamp. clock = time((time_t *) 0); tm = localtime(&clock); sprintf(timestamp, "%04d-%02d-%02d %02d-%02d-%02d", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); *OutValue5 = timestamp; fprintf(file, "Output:\n" " UID=%s\n" " TO_TP=%s\n" " FROM_TP=%s\n" " STATUS=%s\n" " STATUS_MSG=%s\n" " TIMESTAMP=%s\n", *OutValue0, *OutValue1, *OutValue2, *OutValue3, *OutValue4, *OutValue5); fclose(file); }