axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Gratz (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 Fri, 23 Sep 2005 14:49:35 GMT
    [ 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


Mime
View raw message