axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Samisa Abeysinghe (JIRA)" <axis-c-...@ws.apache.org>
Subject [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)
Date Sat, 24 Sep 2005 00:29:27 GMT
    [ http://issues.apache.org/jira/browse/AXISCPP-796?page=comments#action_12330332 ] 

Samisa Abeysinghe commented on AXISCPP-796:
-------------------------------------------

Andreas,
    Please create (preferably seperate) jira isses on each issue you have mentioned and attach
the patches to those issues. 
    Then we could review, test and commit the stuff to the codebase.


> 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


Mime
View raw message