You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by "nadir amra (JIRA)" <ax...@ws.apache.org> on 2007/01/31 20:43:05 UTC
[jira] Commented: (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)
[ https://issues.apache.org/jira/browse/AXISCPP-796?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12469172 ]
nadir amra commented on AXISCPP-796:
------------------------------------
The 3.1 problem, "_string" being used, has now been fixed in the latest code base. However, I am uncertain what direction to take with regards to removing the postfixing of "Array" in Param::serialize() . Removing this would be an easy thing to do, but I need confirmation from the community whether I should. I will wait a week, and if no responses, then I will go ahead and remove.
> 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: https://issues.apache.org/jira/browse/AXISCPP-796
> Project: Axis-C++
> Issue Type: Bug
> Components: Basic Architecture, Client - Stub, Serialization, SOAP, WSDL processing - RPC
> Affects 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.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-dev-help@ws.apache.org