RE: Sending faults from server

2005-05-06 Thread Ian Harder
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

2005-05-06 Thread Yampolsky, Robert
>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);
}