Uploaded image for project: 'Axis-C++'
  1. Axis-C++
  2. AXISCPP-1046

WSDD - Error occurs when deploy web services using AdminClient and AdminService!

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.6 Beta
    • current (nightly)
    • WSDD Processing
    • 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)

      { 280: #ifdef ENABLE_AXISTRACE 281: AXIS_TRANSPORT_STATUS traceRet = (TRANSPORT_FINISHED); 282: if (axiscpp::AxisTrace::isTraceOn()) 283: axiscpp::AxisTrace::traceExit("WSDDDocument", "getBytes", NULL, 2, 284: TRACETYPE_DATA, sizeof(AXIS_TRANSPORT_STATUS), ((void*)&traceRet)); /* AUTOINSERTED TRACE */ 285: return traceRet; 286: #else 287: return TRANSPORT_FINISHED; 288: #endif 289: }

      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!

      Attachments

        Activity

          People

            Unassigned Unassigned
            earthdog William Chou
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: