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 "Andreas Gratz (JIRA)" <ax...@ws.apache.org> on 2005/08/11 16:30:08 UTC

[jira] Created: (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)

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, Client - Stub, Serialization, SOAP, WSDL processing - RPC  
    Versions: current (nightly)    
 Environment: WINDOWS 2000 is running against BEA Weblogic Server 8.1
    Reporter: Andreas Gratz
    Priority: Blocker


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


apache loads axiscpp_mod.so but fails to load sample shared libraries

Posted by krishna <kr...@lac.uic.edu>.
Hi All

I am working with the code which I checked out on 10th Aug. I was trying 
to get the samples working but am unable to do so.
On debugging the server I found that the server is not trying to load 
.so file for the sample.
It is although loading the axiscpp_mod.so.

Thanks
Krishna

Here is some strace output for the current version (server)

    392 close(4)                                = 0
    393 open("/usr/local/axiscpp_deploy/lib/axis/libaxiscpp_mod.so", 
O_RDONLY) = 4
    394 read(4, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000,\0\000"..., 512) = 512
    395 fstat64(4, {st_mode=S_IFREG|0644, st_size=364470, ...}) = 0
    396 old_mmap(NULL, 27276, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 
0x40325000
    397 old_mmap(0x4032b000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED, 4, 0x6000) = 0x4032b000
    398 close(4)                                = 0
    399 open("/usr/local/axiscpp_deploy/lib/axis/libaxis_server.so", 
O_RDONLY) = 4
    400 read(4, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240,\3"..., 512) = 512
    401 fstat64(4, {st_mode=S_IFREG|0644, st_size=9235372, ...}) = 0

    859 alarm(300)                              = 0
    860 read(3, "<?xml version=\'1.0\' encoding=\'ut"..., 4096) = 2761
    861 alarm(300)                              = 300
    862 futex(0x404954b4, FUTEX_WAKE, 2147483647) = 0
    863 futex(0x404b7dc4, FUTEX_WAKE, 2147483647) = 0
    864 time(NULL)                              = 1123776195
    865 write(17, "127.0.0.1 - - [11/Aug/2005:11:03"..., 89) = 89
    866 gettimeofday({1123776195, 30123}, NULL) = 0
    867 times({tms_utime=18, tms_stime=2, tms_cutime=0, tms_cstime=0}) = 
565341027
    868 alarm(30)                               = 300
    869 shutdown(3, 1 /* send */)               = 0
    870 select(4, [3], NULL, NULL, {2, 0})      = 1 (in [3], left {1, 
962000})
    871 read(3, "", 512)                        = 0
    872 close(3)                                = 0
    873 alarm(0)                                = 30
    874 rt_sigaction(SIGUSR1, {0x805f290, [], SA_INTERRUPT}, {SIG_IGN}, 
8) = 0
    875 alarm(0)                                = 0
    876 accept(16, 0xbffff420, [16])            = ? ERESTARTSYS (To be 
restarted)

Strace output from a previous installed version - working properly ( 
server )

           getdents64(4, /* 0 entries */, 4096)    = 0
    392 close(4)                                = 0
    393 
open("/usr/local/axis1.6a_2/axis-c-1.6a.n-Linux-bin/lib/axis/libaxiscpp_mod.so", 
O_RDONLY) = 4
    394 read(4, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000,\0\000"..., 512) = 512
    395 fstat64(4, {st_mode=S_IFREG|0777, st_size=364698, ...}) = 0
    396 old_mmap(NULL, 27272, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 
0x40325000
    397 old_mmap(0x4032b000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED, 4, 0x6000) = 0x4032b000
    398 close(4)                                = 0
    399 
open("/usr/local/axis1.6a_2/axis-c-1.6a.n-Linux-bin/lib/axis/libaxis_server.so", 
O_RDONLY) = 4
    400 read(4, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@+\3\000"..., 512) = 512

    858 read(3, "<?xml version=\'1.0\' encoding=\'ut"..., 4096) = 571
    859 alarm(300)                              = 300
    860 
open("/usr/local/axis1.6a_2/axis-c-1.6a.n-Linux-bin/deploy/lib/libarray.so", 
O_RDONLY) = 4
    861 read(4, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260+\0"..., 512) = 512
    862 fstat64(4, {st_mode=S_IFREG|0755, st_size=396223, ...}) = 0
    863 old_mmap(NULL, 22224, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 
0x40895000
    864 old_mmap(0x4089a000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED, 4, 0x5000) = 0x4089a000
    865 close(4)                                = 0
    866 mprotect(0x40895000, 20480, PROT_READ|PROT_WRITE) = 0
    867 mprotect(0x40895000, 20480, PROT_READ|PROT_EXEC) = 0
    868 alarm(300)                              = 300
    869 alarm(300)                              = 300
    870 alarm(300)                              = 300
    871 alarm(0)                                = 300
    872 alarm(300)                              = 0
    873 alarm(0)                                = 300
    874 select(4, [3], NULL, NULL, {0, 0})      = 0 (Timeout)
    875 write(3, "HTTP/1.1 200 OK\r\nDate: Thu, 11 A"..., 2324) = 2324
    876 time(NULL)                              = 1123777049
    877 write(17, "127.0.0.1 - - [11/Aug/2005:11:17"..., 92) = 92
    878 gettimeofday({1123777049, 141616}, NULL) = 0
    879 times({tms_utime=19, tms_stime=3, tms_cutime=0, tms_cstime=0}) = 
565426438
    880 rt_sigaction(SIGUSR1, {0x805f290, [], SA_INTERRUPT}, {SIG_IGN}, 
8) = 0
    881 alarm(15)                               = 0
    882 read(3, "", 4096)                       = 0
    883 time(NULL)                              = 1123777049
    884 alarm(0)                                = 15
    885 close(3)                                = 0
    886 rt_sigaction(SIGUSR1, {0x805f290, [], SA_INTERRUPT}, {0x805f290, 
[], SA_INTERRUPT}, 8) = 0
    887 alarm(0)                                = 0
    888 accept(16, 0xbffff170, [16])            = ? ERESTARTSYS (To be 
restarted)
    889 --- SIGINT (Interrupt) @ 0 (0) ---
    890 rt_sigaction(SIGHUP, {SIG_IGN}, {0x805f260, [], SA_INTERRUPT}, 
8) = 0
    891 rt_sigaction(SIGUSR1, {SIG_IGN}, {0x805f290, [], SA_INTERRUPT}, 
8) = 0


[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)

Posted by "Samisa Abeysinghe (JIRA)" <ax...@ws.apache.org>.
    [ http://issues.apache.org/jira/browse/AXISCPP-796?page=comments#action_12318570 ] 

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

Is it possible for you to attach the WSDL file that you are using here.

It would be helpful to solve the problem.

> 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, Client - Stub, Serialization, SOAP, WSDL processing - RPC
>     Versions: current (nightly)
>  Environment: WINDOWS 2000 is running against BEA Weblogic Server 8.1
>     Reporter: Andreas Gratz
>     Priority: Blocker

>
> 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


[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)

Posted by "nadir amra (JIRA)" <ax...@ws.apache.org>.
    [ https://issues.apache.org/jira/browse/AXISCPP-796?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12470132 ] 

nadir amra commented on AXISCPP-796:
------------------------------------

Well, more analysis of the code revealed there was still occurrences of the underline problem. 

So, I spent a considerable amount of time studying the code and came to the conclusion that we were inconsistent in the way we use the ParameterInfo methods:

getParamName and getParamNameAsMember, in addition to the duplicate code snippets to remove "_" and "_Ref" in addition to determining name clashes with generated classes from the paramName. 

I revamped the code so that setParamName() takes care of producing the correct strings for following methods (new and renamed):

getParamNameAsSOAPString()
getParamNameAsMember()

and is used consistently throughout the code, making the code cleaner and more efficient since the fields returned by the methods are generated one time. 

Next is to get rid of the appending of "Array".



> 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


[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)

Posted by "nadir amra (JIRA)" <ax...@ws.apache.org>.
    [ 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


[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)

Posted by "Fred Preston (JIRA)" <ax...@ws.apache.org>.
    [ http://issues.apache.org/jira/browse/AXISCPP-796?page=comments#action_12373301 ] 

Fred Preston commented on AXISCPP-796:
--------------------------------------

Issue 1 - Not supported
Issue 2a - This has been fixed
Issue 2b - Need more explanation
Issue 3.1 - Fixed
Issue 3.2 - Still Issues with Arrays (Assume it is for RPC).

would still be easier to have the outstanding issues as seperate JIRAs.

> 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, Client - Stub, Serialization, SOAP, WSDL processing - RPC
>     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


[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)

Posted by "Samisa Abeysinghe (JIRA)" <ax...@ws.apache.org>.
    [ 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


[jira] Updated: (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)

Posted by "Anonymous (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXISCPP-796?page=all ]

 updated AXISCPP-796:
---------------------

    Attachment: TraderService.wsdl

> 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, Client - Stub, Serialization, SOAP, WSDL processing - RPC
>     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


[jira] Closed: (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)

Posted by "nadir amra (JIRA)" <ax...@ws.apache.org>.
     [ https://issues.apache.org/jira/browse/AXISCPP-796?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

nadir amra closed AXISCPP-796.
------------------------------

       Resolution: Fixed
    Fix Version/s: current (nightly)

OK, the underline problem and the appending of "Array" has been resolved. 

I am closing the issue out, but if there are any more problems, please open a new issue and attach wsdl and soap response. 

> 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
>             Fix For: current (nightly)
>
>         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


[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)

Posted by "Andreas Gratz (JIRA)" <ax...@ws.apache.org>.
    [ 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