Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.6 Beta
-
None
-
Windows XP SP2, Apache 2.0.63, SimpleAxisServer, Visual C++ 8.0
Description
When I built Axis-C++ with my own. I tested the samples, everything worked fine.
But when I decided to deploy a web service using AdminClient and AdminService. It turned out to be an error.
So I debugged the programs on my own.
And I found out that when the programs runs to the following function, some value doesn't set well.
AXIS_TRANSPORT_STATUS WSDDDocument::WSDDMemBufInputStream::getBytes(char* pcBuffer, int* piRetSize) on file %AXISCPP_ROOT%\src\wsdd\wsdddocument.cpp at line 257.
The following lines are here:
278: int nBufLen = strlen(m_pcWSDDMemBuffer);
279: if (0 == nBufLen)
290:
291: nBufLen = ((*piRetSize - 1) < nBufLen) ? (*piRetSize - 1) : nBufLen;
292: strncpy(pcBuffer, m_pcWSDDMemBuffer, nBufLen);
293: pcBuffer[nBufLen] = 0;
294: m_pcWSDDMemBuffer+=nBufLen;
So I added the following line after line 279:
*piRetSize = nBufLen;
and the same line after line 294.
It works for the first time. I opened the server.wsdd file for view and found out that the wsdd file was not a valid xml file. So I debug it again and found out the following lines on file WSDDDeployment.cpp at lines 255 - 258:
255: if (fputs("<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\
256: \" xmlns:C=\"http://xml.apache.org/axis/wsdd/providers/C\" xmlns:\
257: CPP=\"http://xml.apache.org/axis/wsdd/providers/CPP\">\n",
258: file) < 0) break;
So I modified these lines as following:
255: if (fputs("<deployment xmlns=\"http://xml.apache.org/axis/wsdd/"
256: "\" xmlns:C=\"http://xml.apache.org/axis/wsdd/providers/C\" xmlns:"
257: "CPP=\"http://xml.apache.org/axis/wsdd/providers/CPP\">\n",
258: file) < 0) break;
Everything works fine. Is this a problem?
BTW: The AdminClient and AdminService projects files are out of date. Some functions are no longer the original. But these are minor problems. So I can easily change the source code to works fine.
Thanks for your help!