I don't know anything about the server, but I do know about trace. You can get trace out of the server by setting LogPath to the trace file name in axiscpp.conf. The trace file need not exist previously. The release version of 1.5 does not have trace enabled, but you can download a traced version from http://cvs.apache.org/dist/axis/nightly/ which is the latest nightly build. Here are some words about client trace that I must put into the documentation. Server trace is the same except for the variable to set in axiscpp.conf. Axis C++ traces method names, parameters and environment data out to a file. Switch trace on in axiscpp.conf by setting ClientLog to the trace file name. The directory must exist but the file should not. For instance (on Windows) ClientLogPath:c:\axishome\AxisLog.taw. The trace file can have any name and any extension. AxisLog.taw is just an example. Trace files are human-readable but are better viewed using the Trace Analyzer for WebSphere, which can be downloaded from http://alphaworks.ibm.com/tech/ta4was. Runtime trace starts up after axiscpp.conf is read in. Startup starts at the very first call to Axis. Switch startup on by setting the environment variable AXISCPP_STARTUP_TRACE. Set AXISCPP_STARTUP_TRACE to the trace file name. For instance (on Windows) AXISCPP_STARTUP_TRACE=c:\axishome\AxisStartup.taw. Run the trace analyzer using java -jar traceanalyzer.jar AxisLog.taw. In the trace analyzer "Properties of the trace file" shows useful information about the user's environment and level of Axis. Here is an example few lines from a typical trace file... [12/03/2005 22:06:20:000] 1 > SOAPTransportFactory.initialize() [12/03/2005 22:06:20:000] 1 > AxisConfig.getAxisConfProperty() @00327058,[05000000] <....> [12/03/2005 22:06:20:000] 1 < AxisConfig.getAxisConfProperty() @00327058,@2 "C:\fvtests\src\ws-axis\c/../../../obj/package/Win32/bin/HTTPTransport.dll" [12/03/2005 22:06:20:000] 1 > SOAPTransportFactory.loadLib() [12/03/2005 22:06:20:000] 1 > -.callLoadLib() [69FFFFFF863200] <i.2.> [12/03/2005 22:06:20:000] 1 < -.callLoadLib() [00003800] <..8.> [12/03/2005 22:06:20:000] 1 < SOAPTransportFactory.loadLib() 0 [12/03/2005 22:06:20:000] 1 < SOAPTransportFactory.initialize() 0 Every line starts with a time/date stamp. Unfortunately Axis C++ does not currently support milliseconds or threadids. In the 3rd column > is a trace entry and < is a trace exit. In the 4th column is the Classname.methodname, indented to show the call stack. Where the classname is -, this is a C-style global function outside of any class. The rest of the data on each line are the parameters. The @00327058 shows that getAxisConfProperty is an instance method and 00327058 is the address of the AxisConfig instance ("this" pointer). This shows which instance of AxisConfig, getAxisConfProperty was invoked for. Methods whose "this" pointer is missing in the trace are static methods. SOAPTransportFactory::initialize is an example of a static method. Parameters are traced as a comma separated list. Control blocks and binary data (typedefs, #defines, etc) are traced like [05000000] <....> where the data as hex is between the [] and the data as ascii characters is between the <>. For a pointer to such data, the pointer is output before what the pointer is pointing at is traced. For void* pointers, the pointer and the first byte of the data is traced (there is no way of knowing the length of the data pointed at by a void* pointer). Most methods have only one return statement. AxisConfig::getAxisConfProperty has multiple return statements and the @2 on it's exit trace shows that it exitted from the 2nd return statement in that method. Here is a snippet from another trace file... [12/03/2005 22:06:05:000] 1 X HTTPTransport getBytes @00326180,@1 caught [40FFFFFFB138000000000000000000002DFFFFFF9055FFFFFF89FFFFFF944300350000003F00000032000000] <@8..........-U.C.5...?...2...> [12/03/2005 22:06:05:000] 1 > SoapBinInputStream.~SoapBinInputStream() @004350F0 [12/03/2005 22:06:05:000] 1 < SoapBinInputStream.~SoapBinInputStream() @004350F0 [12/03/2005 22:06:05:000] 1 > HTTPTransportException.getExceptionCode() @0012F7E0 [12/03/2005 22:06:05:000] 1 < HTTPTransportException.getExceptionCode() @0012F7E0,50 [12/03/2005 22:06:05:000] 1 > HTTPTransportException.what() @0012F7E0 [12/03/2005 22:06:05:000] 1 < HTTPTransportException.what() @0012F7E0,"HTTPTransportException:HTTP transport error Not Found" [12/03/2005 22:06:05:000] 1 X ClientAxisEngine process @00435638,caught AxisException(2, "HTTPTransportException:HTTP transport error Not Found") The X in the 3rd column shows that HTTPTransport has caught an exception. The @1 in it's parameter list shows that it is the first catch statement in that method that has caught the exception. getBytes does some work and then rethrows the exception, which ClientAxisEngine::process catches. Unfortunately the tool does not show the stack unwinding properly when exceptions are thrown and caught. Another snippet... [12/03/2005 22:06:05:000] 1 > SoapSerializer.serialize() @0032B5A0,------------> [12/03/2005 22:06:05:000] 1 I - " [12/03/2005 22:06:05:000] 1 I - <" In this example SoapSerializer::serialize is passed a string that contains a newline character, a < character and the null terminator. The ------------> indicates that multiline output follows. If a parameter is traced as <BADPOINTER> it means that trace attempted to dereference a pointer, which caused a SIGSEGV that trace caught. If a parameter is traced as <UNKNOWNTYPE, it means the trace tool and runtime have got out of step, which is a bug. If a parameter is traced as <ANONYMOUS> it means it is unnamed in the method signature. Interesting places to look in a trace include... - the entry trace for HTTPChannel::operator<< shows the message that will be sent on the wire - any exception records - the trace record immediately before ~Stub, since ~Stub is often called immediately after a SIGSEGV I hope this helps Mark Mark Whitlock IBM ----- Forwarded by Mark Whitlock/UK/IBM on 11/05/2005 15:54 ----- "Yampolsky, Robert" <[EMAIL PROTECTED] To com> "Apache AXIS C User List" <axis-c-user@ws.apache.org> 11/05/2005 15:33 cc Subject Please respond to RE: list of deployed web services "Apache AXIS C User List" Yes, I do have the files in the wsdls folder. I'm just trying to get it to display the wsdl for the standard services that come with the distribution (calculator, array, etc). Axis generates the service list page correctly when I access http://localhost/axis, and I looked at the code, which seems to be scanning the wsdls folder to generate that page, so they're definitely there. The code to process the ?wsdl URL's looks simple enough, but it's apparently segfaulting. I notice that this code has changed between versions 1.4 and 1.5. Anyway, for some reason Apache isn't generating a core dump (that I can find) when it segfaults. Is there a way to get axis to dump debugging info to a log. I see that there's a log file specified in the axiscpp_deploy/etc/axiscpp.conf file, but how do you turn on logging? Am I right in guessing that the following code from Axis.cpp in the 'engine' directory is what's supposed to list the wsdl file (the second 'else' clause)? Anybody see anything that could segfault there? // Handle the GET method else if (AXIS_HTTP_GET == pStream->getSubProtocol()) { // get the uri path // i.e "/abc/xyz/" part of http://somehost/abc/xyz/ string sUriWOAxis = pStream->getTransportProperty(SERVICE_URI); string sServiceName; bool bNoExt = true; if (sUriWOAxis == "/") { bNoExt = false; sUriWOAxis = ""; } if (sUriWOAxis.empty ()) { ...generate web page listing all deployed services. } else { sServiceName = g_pConfig->getAxisConfProperty(AXCONF_AXISHOME); sServiceName += WSDLDIRECTORY + sUriWOAxis + ".wsdl"; // Check whether wsdl file is available if ((WsddFile = fopen (sServiceName.c_str (), "r")) == NULL) { pStream->sendBytes("<h3>Url not available</h3>", NULL); Status = AXIS_SUCCESS; // Handle the error } else { int charcount = 0; while ((charcount = fread (ReadBuffer, 1, BYTESTOREAD - 1, WsddFile)) != 0) { *(ReadBuffer + charcount) = '\0'; pStream->sendBytes(ReadBuffer, NULL); } Status = AXIS_SUCCESS; fclose (WsddFile); } } } -----Original Message----- From: Samisa Abeysinghe [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 10, 2005 11:39 PM To: Apache AXIS C User List Subject: RE: list of deployed web services Do you have the wsdl files in $AXISCPP_DEPLOY/wsdls folder? BTW, Simple Axis server does not support this ?wsdl URLs. It only works with Apache. Also note that, Axis C++ engine is not capable of generating the WSDL for the service. Rather it gives out the WSDL file stored in $AXISCPP_DEPLOY/wsdls folder. Thanks, Samisa... -----Original Message----- From: Yampolsky, Robert [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 10, 2005 9:52 PM To: Apache AXIS C User List Subject: RE: list of deployed web services Not true. The URL's in the front page have /axis in them (I'm using 1.5). Same thing happens when I click the front page links or type the URL's manually. I don't see any core files generated by the Apache segfault, so I can't determine why it's segfaulting. I tried to access a wsdl URL through simple_axis_server, but that just hangs (browser gets no response). Don't know if that's supposed to work, but I thought that if it did and it segfaulted, I'd stand some chance of debugging it. I'm assuming that the following in my httpd.conf file is all I need to do to map the localhost/axis path to the true axis location and that the axis handler is responsible for translating the ?wsdl to the wsdls subdirectory. LoadModule axis_module modules/libaxiscpp_mod2.so <Location /axis> SetHandler axis </Location> -----Original Message----- From: Tony Dodd [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 10, 2005 11:32 AM To: 'Apache AXIS C User List' Subject: RE: list of deployed web services It's simply got the wrong url coded in the Axis front page, if you look at Axis.cpp someone has commented out the line that adds /axis (line 235 in 1.4). If you enter http://localhost/axis/array?wsdl in the url combo explicitly it should work. Tony Dodd Oxford University Research Technologies (Xaira) >-----Original Message----- >From: Yampolsky, Robert [mailto:[EMAIL PROTECTED] >Sent: 10 May 2005 16:09 >To: Apache AXIS C User List >Subject: RE: list of deployed web services > >Doesn't work for me. http://localhost/axis does bring up a >page with links to all the wsdl's, but when I click on any of >those links I get a >503 error in my browser, and the Apache error log logs a >segfault. Any idea how to debug this? > >-----Original Message----- >From: Samisa Abeysinghe [mailto:[EMAIL PROTECTED] >Sent: Monday, May 09, 2005 11:56 PM >To: Apache AXIS C User List >Subject: RE: list of deployed web services > >Hi, > If you have the wsdl files in %AXISCPP_DEPLOY%\wsdls >folder, you should get the ?wsdl thing working. >http://localhost/axis/array?wsdl is the correct link (and it >works on my >machine) > >Also the calculator sample need three mandatory parameters: >calculator.exe add 101 10 > >HTH > >Samisa... > >-----Original Message----- >From: So Hok Chun, Bill [mailto:[EMAIL PROTECTED] >Sent: Monday, May 09, 2005 9:30 PM >To: axis-c-user@ws.apache.org >Subject: list of deployed web services > >Dear All, > >With some help from people in the mailing list, I installed axis. > >And I can run some of the samples like array, base, rpcfault >(but not calculator. I guess there should be some problem in >that sample). > >About the http://localhost/axis page, there's a column "WSDL" >in the table. The is like http://localhost/array?wsdl > >However, there's simply no such directory in my server. I >tried http://localhost/axis/array?wsdl . But still doesn't >work. The browser just return a blank page. > >What should the correct link look like? > >Thanks for your help. > >Yours, >Bill >