[ http://issues.apache.org/jira/browse/AXISCPP-796?page=comments#action_12330280 ]
Andreas Gratz commented on AXISCPP-796: --------------------------------------- Hi, after spending a lot of work AXIS C++ is working with BEA weblogc server. There are 1) many local changes in the C++ source 2) some global changes in the kind of interaction between AXIS C++ and the generated C++ stubs 3) one or more bugfixes 4) changes in the C++ code generator 5) changes in the build properties of the library Are there any chances to bring this in the AXIS C++ project and how can this be done. Regards Andreas > 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) > ---------------------------------------------------------------------------------------------------------------------------------- > > Key: AXISCPP-796 > URL: http://issues.apache.org/jira/browse/AXISCPP-796 > Project: Axis-C++ > Type: Bug > Components: Basic Architecture, Serialization, WSDL processing - RPC, > Client - Stub, SOAP > Versions: current (nightly) > Environment: WINDOWS 2000 is running against BEA Weblogic Server 8.1 > Reporter: Andreas Gratz > Priority: Blocker > Attachments: TraderService.wsdl > > 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 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
