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

AXIS C++ is not able to call webservices with simple and array parameter in BEA Weblogic Server (here in version 8.1.2 and 8.1.4)

    XMLWordPrintableJSON

Details

    Description

      Hi,

      AXIS C++ is not able to call webservices with simple and array parameter in BEA Weblogic Server (here in version 8.1.2 and 8.1.4). To have an idee, what can be the problem i downloaded axis-c-win32-current-src.zip (08.08.2005) and try compiling and debugging the sample.

      1) Visual C++ 2002 isn't compatible with the deliverd *.sln and *.vcproj files. These are for Visual C++ 2003. But Generating new files from *.dsw und *.dsp is working.

      2) There was one compile error

      FIX von start_initializing() in axis.cpp

      static void start_initializing()
      {
      long exchange = 1;
      long comperand = 0;
      #if 0 // VC7 fix
      while (InterlockedCompareExchange(((void **)&g_uModuleInitializing), (void *)&exchange, (void *) &comperand));
      #else
      //correct prototyp is
      // LONG InterlockedCompareExchange( LPLONG volatile Destination, LONG Exchange, LONG Comperand ) ;
      while (InterlockedCompareExchange(&g_uModuleInitializing, exchange, comperand));
      #endif
      }

      2) Linking the C++ Client with "Standard Library" failed at runtime with memory corruption, linking with MSVCRTxx.DLL are running well (after fixings). The libraries are linked with "Standard Library" and working well.

      3) Special Problems (with special workarounds)

      3.1) WSDL2WS generated incompatible C++ wrapper classes for string types (for Weblogic)

      For example WSDL2WS generated in an client stub an output parameter like
      m_pCall->addParameter((void*)Value0, "_string", XSD_STRING);
      and Weblogic assumes
      m_pCall->addParameter((void*)Value0, "string", XSD_STRING);

      Changing "_string" to "string" in the fromAXIS generated client stub works fine (except for arrarys -> later). But it can't be a solution, manipulating an source after every generation. My knowledge about SOAP is not so deep that i can argue this is an error, but it is incompatible in any way. To (hot) fix the problem in an general way i made an special build with the following changes in SoapSerializer::addOutputParam
      ...
      case XSD_NOTATION:
      case XSD_STRING:
      #ifdef _WLS
      if ( 0 == strcmp(pchName, "_string") )
      pParam->m_sName = pchName+1 ;
      #endif
      ....

      (In the next days i wan't investigate all datatypes against Weblogic.)

      3.2) Serialisation from array types dosn't work properly, because the tag/variable name is postfixed with "Array".

      I managed the problem with some changes in Param::serialize() and removed the postfixing with "Array" like

      ...sample for 4 places...
      #ifndef _WLS
      pSZ.serialize (m_strPrefix.c_str (), ":", m_sName.c_str (),
      "Array", " xmlns:", m_strPrefix.c_str (), "=\"",
      m_strUri.c_str (), "\"", NULL);
      #else
      // Without "Array"
      pSZ.serialize (m_strPrefix.c_str (), ":", m_sName.c_str (),
      " xmlns:", m_strPrefix.c_str (), "=\"",
      m_strUri.c_str (), "\"", NULL);
      #endif
      ...

      After that output and input (was never a problem) serialisation worked for arrays and for compound arrays properly in my the test sample, an EJB which is deployed as webservice in Weblogic server 8.1.:

      // the compound type
      public final class TradeResult
      implements Serializable
      {
      private int numberTraded;
      private String stockSymbol;
      }

      // EJB method with compund array type
      public TradeResult[] buyx(TradeResult[] TradeArray);

      Because i'm first here i don't know exacly what to do know or how the community managed such a problem. If my small feedback to your great software leeds to some enhancements it is very easy for me to test it with BEA weblogic.

      Regards
      Andreas

      Attachments

        Activity

          People

            Unassigned Unassigned
            gra Andreas Gratz
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: