Re: Memory leaks
Hi I posted similar question couple of weeks ago. I tried with tools that could detect memory leaks and I get hints about using noncompatible commands for allocating memory (using operator new for allocating and then free for dealocating). I checked the source code and I find no such cases. I think there was also detected memory leak in excerses XML parser. When I tested my code in 1 transactions, memory consumption first increased, but then a little bit dropped and stayed almost the same to the end of transactions. Tomaz - Original Message - From: Stettler, Robert To: Apache AXIS C User List Sent: Wednesday, December 21, 2005 3:24 AM Subject: Memory leaks I am using 1.5 final. It seems to be leaking. I am deleting objects returned by generated stubs and I delete the Soap object when I am done with it. Is there any other clean up that is required? The information contained in this e-mail is confidential and/or proprietary to Capital One and/or its affiliates. The information transmitted herewith is intended only for use by the individual or entity to which it is addressed. If the reader of this message is not the intended recipient, you are hereby notified that any review, retransmission, dissemination, distribution, copying or other use of, or taking of any action in reliance upon this information is strictly prohibited. If you have received this communication in error, please contact the sender and delete the material from your computer.
Loading HTTPChannel.dll multiple times
Hi I'm working on Axis for about 3 months. I already reported some problems and also receive solutions, so I would like to thanks for that. My next problem is somehow also connected with this issue: http://issues.apache.org/jira/browse/AXISCPP-657. In my program I have callback function which is called by some other program. This callback function has declared Stub object, so it sends data (SOAP format) to the web server and waits for response. The skeleton was created by WSDL2WS tool. Callback function is called by different threads, so it can be called simultaneously. I looked through examples for multithreading task. So the Stub object must be created inside callback function, other way callback function could cause an error because in multithreading process the same Stub object could be accessed more than once in the same time. But when the Stub object is created inside callback function is also destroyed when the function returns. This means that HTTPChannel.dll will be called multiple times. Is it possible to avoid multiple calls of loading library in multithreaded environment? Best regards Tomaz Rotovnik
Memory Leak - solution
Hello I would like to post some comments about memory handling with user defined parameters (whith those that are send to the web server and those that are received from the web server). In previous posts (see mail below) I already mentioned memory leak, because user defined parameters are never deleted. Reason why I can't deleted allocated memory was in compiler settings: I use setting "multithreaded run time library" instead of "multithreaded DLL run time library". I think this should be mentioned (or alerted) before users start developing their own examples. I spent one week to figure this out. If this is already mentioned then I apologize. Now I was able to delete xsd_string types, for an example: setReturnAddPointsParameter::~setReturnAddPointsParameter(){ ... if(sBlpType != NULL){ delete [] sBlpType; } sBlpType = NULL; ... } The problem was still with the xsd_double, xsd_int or similar types. I put delete statement in Axis_DeSerialize_setReturnAddPointsParameter method: int Axis_DeSerialize_setReturnAddPointsParameter(setReturnAddPointsParameter* param, IWrapperSoapDeSerializer* pIWSDZ){ ... xsd__double * dAmount = NULL; if ((dAmount = pIWSDZ->getElementAsDouble( "dAmount",0)) != NULL){ param->dAmount = *( dAmount );delete dAmount; dAmount = NULL; } ... } The last thing was parameters of xsd_string type that are send to the web server. They are added with statement addParameter for an example: m_pCall->addParameter((void*)Value1, "sMSISDN", XSD_STRING); Inside axis_dll there is new allocation created for those types, but it is never deleted. I checked Param.cpp file and destructor statement: Param::~Param (){... case XSD_STRING: if (AxisEngine::m_bServer){delete [] const_cast(m_Value.pStrValue); } break; ... } So allocated memory is only deleted when Axis is initialized as server. Why? With commenting this condition string data type is deleted with no memory leak. Is this wrong? Best regards Tomaz Rotovnik - Original Message - From: Tomaz Rotovnik To: Apache AXIS C User List Sent: Friday, October 28, 2005 5:57 PM Subject: Memory Leak Hi again I'm trying to solve the problem with the memory leak on the client side of axis library. I've next function which is called in multithreaded way: setReturnAddPointsParameter* pRAPP = NULL;MPBLPSoap pBLP_authorize(sMPG.strURL.c_str(), APTHTTP1_1);pBLP_authorize.Timeout(10);pRAPP = pBLP_authorize.AddPoints(1,string_number,double_value); pRAPP is structure with next parameters: xsd__string sBlpType;xsd__double dAmount;xsd__string lTransactionID; The problem is how to delete allocated space for these parameters when I don't needed it any more. There is defined delete function Axis_Delete_setReturnAddPointsParameter which is defined: void Axis_Delete_setReturnAddPointsParameter(setReturnAddPointsParameter* param, bool bArray = false, int nSize=0){ if (bArray) delete [] param; else delete param;} So I called this function when I want to delete allocated memory for parameters. This function calls destructor: setReturnAddPointsParameter::~setReturnAddPointsParameter(){ } which is empty. If I use statements delete or free inside destructor I get the following error "User breakpoint called from code at ***". So I checked how are basic types defined (xsd_string, xsd_double). They are defined as classes and their destructors are empty. If I put delete statements into these destructors then the result structure pRAPP is empty, because parameters are deleted before they can be used (destructor is called after calling this method: xsd__stringSoapDeSerializer::getElementAsString (const AxisChar * pName, const AxisChar * pNamespace). So is it possible to delete allocated memory or is there a problem in design structure of axis library? I mean is it possible to delete allocated memory for basic type classes? Is solution in defining some extra methods which they have access to those classes and they include delete statement? Best regards Tomaz
Memory Leak
Hi again I'm trying to solve the problem with the memory leak on the client side of axis library. I've next function which is called in multithreaded way: setReturnAddPointsParameter* pRAPP = NULL;MPBLPSoap pBLP_authorize(sMPG.strURL.c_str(), APTHTTP1_1);pBLP_authorize.Timeout(10);pRAPP = pBLP_authorize.AddPoints(1,string_number,double_value); pRAPP is structure with next parameters: xsd__string sBlpType;xsd__double dAmount;xsd__string lTransactionID; The problem is how to delete allocated space for these parameters when I don't needed it any more. There is defined delete function Axis_Delete_setReturnAddPointsParameter which is defined: void Axis_Delete_setReturnAddPointsParameter(setReturnAddPointsParameter* param, bool bArray = false, int nSize=0){ if (bArray) delete [] param; else delete param;} So I called this function when I want to delete allocated memory for parameters. This function calls destructor: setReturnAddPointsParameter::~setReturnAddPointsParameter(){ } which is empty. If I use statements delete or free inside destructor I get the following error "User breakpoint called from code at ***". So I checked how are basic types defined (xsd_string, xsd_double). They are defined as classes and their destructors are empty. If I put delete statements into these destructors then the result structure pRAPP is empty, because parameters are deleted before they can be used (destructor is called after calling this method: xsd__stringSoapDeSerializer::getElementAsString (const AxisChar * pName, const AxisChar * pNamespace). So is it possible to delete allocated memory or is there a problem in design structure of axis library? I mean is it possible to delete allocated memory for basic type classes? Is solution in defining some extra methods which they have access to those classes and they include delete statement? Best regards Tomaz
Re: Re: Memory Leak?
Hi Anders I checked the method Axis_Delete_setReturnAddPointsParameter and it deletes all the structure, but it is never called, so I put statement calling this method after I perform transaction. Anyway memory leak still exists. So it is really strange. I think I'll go to check how many times is "new" operator called when deserializing individual parameter. pRAPP = pBLP_authorize.AddPoints(1,sTr.szMSISDN,sTr.dAmount);//data processing Axis_Delete_setReturnAddPointsParameter(pRAPP); void Axis_Delete_setReturnAddPointsParameter(setReturnAddPointsParameter* param, bool bArray = false, int nSize=0){ if (bArray) delete [] param; else delete param;} Best regards Tomaz >> The correct way to destroy complex objects is probably to use> the static function Axis_Delete_setReturnAddPointsParameter(...)> which you can find in setReturnAddPointsParameter.cpp.>> I haven't been looking at XSD_DOUBLE etc but if you say that> these are created with new you are probably correct.>> /Anders>>>From: Tomaz Rotovnik <[EMAIL PROTECTED]>>>Reply-To: "Apache AXIS C User List" <axis-c-user@ws.apache.org>>>To: Apache AXIS C User List >><axis-c-user@ws.apache.org>,[EMAIL PROTECTED]>>Subject: Re: Memory Leak?>>Date: Thu, 27 Oct 2005 10:43:57 +0200>>>>Hi Anders>>>>I'm using Axis C client, but I suppose that the memory leaks are the same >>right? I already tried with putting delete statements into destructor >>classes but they are never called if I use free(pRAPP), where pRAPP is >>setReturnAddPointsParameter*. So should I use delete instead of free? I'm >>a little bit confused, because Management Guide about De-allocation >>Semantics talks about usage of free statements.>>>>In case of deserialazing received parameters from web server I think that >>statement "new" is used also for allocating basic types XSD_DOUBLE or >>XSD_LONG. If is this true then this should be also deleted in destructor, >>right?>>>>Best regards>>>>Tomaz>>>>>>- Original Message - From: "Anders Eriksson" >><[EMAIL PROTECTED]>>>To: <axis-c-user@ws.apache.org>>>Sent: Thursday, October 27, 2005 10:01 AM>>Subject: RE: Memory Leak?>>>>>>>>>>Hi Tomaz,>>>>>>I have been looking in to the memory leaks in the Axis C server>>>a bit.>>>>>>I found that in complex objects strings are not deleted. You can>>>add the delete statments in your setReturnAddPointsParameter>>>class destructor.>>>>>>Moreover there is a leak in in Apache1_3module (mod_axis.dll),>>>in ApacheTransport.cpp where m_pBuffers is not deleted.>>>>>>I have been requested to do a svn patch but as I am not>>>working on the lastest version I have not found the time to do>>>this. I will do it as soon as I can...>>>>>>/Anders>>>>>>>From: "Tomaz Rotovnik" <[EMAIL PROTECTED]>>>>>Reply-To: "Apache AXIS C User List" <axis-c-user@ws.apache.org>>>>>To: "Apache AXIS C User List" <axis-c-user@ws.apache.org>>>>>Subject: Memory Leak?>>>>Date: Wed, 26 Oct 2005 18:04:26 +0200>>>>>>>>Hi>>>>>>>>I'm using axis 1.5 C++. When I tested my client (multithreaded) I found >>>>out that memory is growing with number of transactions. I read Axis C++ >>>>Memory Management Guide about De-allocation Semantics.>>>>>>>>For example WSDL2XML generated this parts of code>>>>>>>>Parameters that will be send over the web>>>>>>>> m_pCall->addParameter((void*)&Value0, "lTerminalID", XSD_LONG);>>>> m_pCall->addParameter((void*)Value1, "sMSISDN", XSD_STRING);>>>> m_pCall->addParameter((void*)&Value2, "dAmount", XSD_DOUBLE);>>>>>>>>We expect next received parameters:>>>>>>>>xsd__string sBlpType;>>>>xsd__double dAmount;>>>>xsd__string lTransactionID;>>>>>>>>Where and How can I delete memory for this parameters?>>>>>>>>Return function is something like that>>>>>>>>MPBLPSoap::AddPoints(xsd__long Value0, xsd__string Value1, xsd__double >>>>Value2){>>>>...>>>>pReturn = (setReturnAddPointsParameter*)m_pCall->getCmplxObject((void*) >>>>Axis_DeSeriali
Re: Where to put AxisClient.dll?
Hi You can also set Working directory in VS. Open menu Projects->Settings->Debug tab ->Working Directory In that directory than put all dll's needed for the project. Best regards Tomaz - Original Message - From: Pico Florin To: Apache AXIS C User List Sent: Thursday, October 27, 2005 3:58 PM Subject: Where to put AxisClient.dll? Hi! I have a problem with my Axis C++ client. I cannot starting from Visual C++ 6.0 because a message error is shown: "This application has failed to satrt because AxisClient.dll was not found. Re-installing the application may fix the problem". Thank you, Florin How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos. Get Yahoo! Photos
Re: Memory Leak?
Hi Anders I'm using Axis C client, but I suppose that the memory leaks are the same right? I already tried with putting delete statements into destructor classes but they are never called if I use free(pRAPP), where pRAPP is setReturnAddPointsParameter*. So should I use delete instead of free? I'm a little bit confused, because Management Guide about De-allocation Semantics talks about usage of free statements. In case of deserialazing received parameters from web server I think that statement "new" is used also for allocating basic types XSD_DOUBLE or XSD_LONG. If is this true then this should be also deleted in destructor, right? Best regards Tomaz - Original Message - From: "Anders Eriksson" <[EMAIL PROTECTED]> To: Sent: Thursday, October 27, 2005 10:01 AM Subject: RE: Memory Leak? Hi Tomaz, I have been looking in to the memory leaks in the Axis C server a bit. I found that in complex objects strings are not deleted. You can add the delete statments in your setReturnAddPointsParameter class destructor. Moreover there is a leak in in Apache1_3module (mod_axis.dll), in ApacheTransport.cpp where m_pBuffers is not deleted. I have been requested to do a svn patch but as I am not working on the lastest version I have not found the time to do this. I will do it as soon as I can... /Anders From: "Tomaz Rotovnik" <[EMAIL PROTECTED]> Reply-To: "Apache AXIS C User List" To: "Apache AXIS C User List" Subject: Memory Leak? Date: Wed, 26 Oct 2005 18:04:26 +0200 Hi I'm using axis 1.5 C++. When I tested my client (multithreaded) I found out that memory is growing with number of transactions. I read Axis C++ Memory Management Guide about De-allocation Semantics. For example WSDL2XML generated this parts of code Parameters that will be send over the web m_pCall->addParameter((void*)&Value0, "lTerminalID", XSD_LONG); m_pCall->addParameter((void*)Value1, "sMSISDN", XSD_STRING); m_pCall->addParameter((void*)&Value2, "dAmount", XSD_DOUBLE); We expect next received parameters: xsd__string sBlpType; xsd__double dAmount; xsd__string lTransactionID; Where and How can I delete memory for this parameters? Return function is something like that MPBLPSoap::AddPoints(xsd__long Value0, xsd__string Value1, xsd__double Value2){ ... pReturn = (setReturnAddPointsParameter*)m_pCall->getCmplxObject((void*) Axis_DeSerialize_setReturnAddPointsParameter, (void*) Axis_Create_setReturnAddPointsParameter, (void*) Axis_Delete_setReturnAddPointsParameter,"AddPointsResult", 0); ... } and this is part of calling statement: setReturnAddPointsParameter* pRAPP = NULL; MPBLPSoap pBLP_authorize(sMPG.strURL.c_str(), APTHTTP1_1); pBLP_authorize.Timeout(sMPG.iHTTPTimeoutSec); pRAPP = pBLP_authorize.AddPoints(1,sTr.szMSISDN,sTr.dAmount); After successful operation I call free(pRAPP) but unfortunately I still get memory leak. I checked with Trial version of IBM PurifyPlus and it suspects that memory leak exists because of unallocated parameters : m_pCall->addParameter((void*)Value1, "sMSISDN", XSD_STRING); xsd__string sBlpType; xsd__double dAmount; xsd__string lTransactionID; I also checked what calling free do: It erases the pointers (they become undefined), so they are de-allocated right? But memory is still growing with each transaction and Purify always shows on the same problem. I also find out that new char is created when calling m_pCall->addParameter((void*)Value1, "sMSISDN", XSD_STRING); so when is this array deleted? Any suggestions are welcome. Tomaz _ Senaste nytt från motormarknaden http://motor.msn.se/
Memory Leak?
Hi I'm using axis 1.5 C++. When I tested my client (multithreaded) I found out that memory is growing with number of transactions. I read Axis C++ Memory Management Guide about De-allocation Semantics. For example WSDL2XML generated this parts of code Parameters that will be send over the web m_pCall->addParameter((void*)&Value0, "lTerminalID", XSD_LONG); m_pCall->addParameter((void*)Value1, "sMSISDN", XSD_STRING); m_pCall->addParameter((void*)&Value2, "dAmount", XSD_DOUBLE); We expect next received parameters: xsd__string sBlpType;xsd__double dAmount;xsd__string lTransactionID; Where and How can I delete memory for this parameters? Return function is something like that MPBLPSoap::AddPoints(xsd__long Value0, xsd__string Value1, xsd__double Value2){ ... pReturn = (setReturnAddPointsParameter*)m_pCall->getCmplxObject((void*) Axis_DeSerialize_setReturnAddPointsParameter, (void*) Axis_Create_setReturnAddPointsParameter, (void*) Axis_Delete_setReturnAddPointsParameter,"AddPointsResult", 0);... } and this is part of calling statement: setReturnAddPointsParameter* pRAPP = NULL; MPBLPSoap pBLP_authorize(sMPG.strURL.c_str(), APTHTTP1_1);pBLP_authorize.Timeout(sMPG.iHTTPTimeoutSec); pRAPP = pBLP_authorize.AddPoints(1,sTr.szMSISDN,sTr.dAmount); After successful operation I call free(pRAPP) but unfortunately I still get memory leak. I checked with Trial version of IBM PurifyPlus and it suspects that memory leak exists because of unallocated parameters : m_pCall->addParameter((void*)Value1, "sMSISDN", XSD_STRING); xsd__string sBlpType;xsd__double dAmount;xsd__string lTransactionID; I also checked what calling free do: It erases the pointers (they become undefined), so they are de-allocated right? But memory is still growing with each transaction and Purify always shows on the same problem. I also find out that new char is created when calling m_pCall->addParameter((void*)Value1, "sMSISDN", XSD_STRING); so when is this array deleted? Any suggestions are welcome. Tomaz
Re: Axis is unrecovered when errors occurs
Hi I take very long procedure to discover the problem. I compiled all libraries in debug mode and then start debugging with VSC++ 6.0. I also have the same question: How to see what is received in one step (printf or similar)? If you forgot for example "<" or ">" (syntax error) you can also get the same error. - Original Message - From: Pico Florin To: Apache AXIS C User List Sent: Tuesday, October 25, 2005 5:09 PM Subject: Re: Axis is unrecovered when errors occurs Thank for you response. I have a question: how can I introspect the response(meaning what is the returning content)? I want to see the response content somehow. Ehat you indicated to me (_responseHeader.getChars() works fine until the client encounters that problem with "Cannot deserialize the requested data" after that the response content is maybe changed(but why?). Regards, Florin Tomaz Rotovnik <[EMAIL PROTECTED]> wrote: I think the problem could be in requesting different parameters than those that are sent as response. I mean in (_responseHeader.getChars() you have defined something else that is realy returned. Tomaz - Original Message - From: Pico Florin To: Apache AXIS C User List Sent: Tuesday, October 25, 2005 3:59 PM Subject: Axis is unrecovered when errors occurs Hi! When AXIS C++ client is throwing the fallowing exception: Exception : Cannot deserialize the requested element the next calls will throw an "Unknown exception has occured!". What is interesting is that the client sends the message but when is encountering the snippet: if (AXIS_SUCCESS == m_pCall->checkMessage(_responseHeader.getChars(), _serviceNamespace.getChars())) is throwing the "Unknown exception has occured!". All the sent messages are throwing this exception. So, how can I recover the client state in order to pass this exception? My AXIS client sends from time to time messages to SAP BC server. Thank you, Florin How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos. Get Yahoo! Photos Yahoo! Messenger NEW - crystal clear PC to PC calling worldwide with voicemail
Re: Axis is unrecovered when errors occurs
I think the problem could be in requesting different parameters than those that are sent as response. I mean in (_responseHeader.getChars() you have defined something else that is realy returned. Tomaz - Original Message - From: Pico Florin To: Apache AXIS C User List Sent: Tuesday, October 25, 2005 3:59 PM Subject: Axis is unrecovered when errors occurs Hi! When AXIS C++ client is throwing the fallowing exception: Exception : Cannot deserialize the requested element the next calls will throw an "Unknown exception has occured!". What is interesting is that the client sends the message but when is encountering the snippet: if (AXIS_SUCCESS == m_pCall->checkMessage(_responseHeader.getChars(), _serviceNamespace.getChars())) is throwing the "Unknown exception has occured!". All the sent messages are throwing this exception. So, how can I recover the client state in order to pass this exception? My AXIS client sends from time to time messages to SAP BC server. Thank you, Florin How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos. Get Yahoo! Photos
Re: DLOPEN FAILED ... parser library
Hi I think I have the same problem. If you use original (you didn't compiled it) AxisXMLParserXerces.dll the name of xerces should be xerces-c_2_2_0.dll. Other way it is possible to get the following error. You can also try to compile AxisXMLParserXerces.dll by yourself wih newer version of xerceses (2_7). Hope this help Best regards Tomaz - Original Message - From: "Christopher S. Johnson" <[EMAIL PROTECTED]> To: Sent: Monday, October 24, 2005 9:36 PM Subject: DLOPEN FAILED ... parser library All - While running my client side service I get the following error. "DLOPEN FAILED in loading parser library" I have added xerces to my windows path and have the following dll's in the same dir as my exe. AxisClient.dll AxisClientC.dll AxisXMLParserXerces.dll HTTPChannel.dll HTTPTransport.dll Any help would be great. Thanks.
Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails?
Hi Thank you for the response. I just want to say that using different libraries (AxisXMLParser.dll - original, my release and my debug , xerces-c_X_X) causes different behavior in loading HTTPChannel.dll library. I'm using only 1.5 version of AXIS. Only when I generated AxisXMLParser.dll library by myself (compiled with VC++ 6.0) and using xerces-c_2_7.dll library I get correct behavior (HTTPChannel.dll library is loaded only once). In other cases (using original AxisXMLParser.dll which loads xerces-c_2_2) HTTPChannel.dll library is loaded for each axis instance. Does anyone checked loading HTTPChannel.dll when using multithreaded client side of axis? Best regards Tomaz - Original Message - From: John Hawkins To: Apache AXIS C User List Sent: Thursday, October 13, 2005 12:40 PM Subject: Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hmm, not quite clear on what you're saying here but if it helps I don't think we fixed the transport reload issue until post 1.5 "Tomaz Rotovnik" <[EMAIL PROTECTED]> 12/10/2005 18:38 Please respond to"Apache AXIS C User List" To "Apache AXIS C User List" <axis-c-user@ws.apache.org> cc Subject Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hi I tested again and I think I found the problem. First I used my compiled version of AxisClient.dll with AxisXMLParser.dll allready provided in axis version 1.5 + xerces-c_2_2_0. Each time I performed transaction, the HTTPChannel.dll librariy was loaded again and again. Then I used my compilation of debug AxisXMLParser.dll with xerces-c_2_7. Debug HTTPChannel.dll library was loaded only at the begining (when Axis::initialize(false) was called). If I use debug version of AxisClient.dll and release version of AxisXMLParser.dll the release HTTPChannel.dll librariy is loaded at each call again and again. It is very strange and also not logical for me. - Original Message - From: John Hawkins To: Apache AXIS C User List Sent: Wednesday, October 12, 2005 11:28 AM Subject: Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hmm, I thought we'd got rid of this - there is certainly a JIRA that was trying to address all these sorts of issues.http://issues.apache.org/jira/browse/AXISCPP-657 Hmm, looks like it never had any specific issues addressed in it ! Maybe you can use this JIRA to fix it ? cheers, John.
Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails?
Hi I tested again and I think I found the problem. First I used my compiled version of AxisClient.dll with AxisXMLParser.dll allready provided in axis version 1.5 + xerces-c_2_2_0. Each time I performed transaction, the HTTPChannel.dll librariy was loaded again and again. Then I used my compilation of debug AxisXMLParser.dll with xerces-c_2_7. Debug HTTPChannel.dll library was loaded only at the begining (when Axis::initialize(false) was called). If I use debug version of AxisClient.dll and release version of AxisXMLParser.dll the release HTTPChannel.dll librariy is loaded at each call again and again. It is very strange and also not logical for me. - Original Message - From: John Hawkins To: Apache AXIS C User List Sent: Wednesday, October 12, 2005 11:28 AM Subject: Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hmm, I thought we'd got rid of this - there is certainly a JIRA that was trying to address all these sorts of issues.http://issues.apache.org/jira/browse/AXISCPP-657 Hmm, looks like it never had any specific issues addressed in it ! Maybe you can use this JIRA to fix it ? cheers, John.
Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails?
Hi When I use multithreading on client side I found out that for each transaction HTTPChannel.dll library is loaded. Is this necessary? Why only this dll and not also AxisXMLParser and HTTPTransport? Best Regards Tomaz
Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails?
Hi I don't have problems with calling Axis::terminate(). But I call it after all Axis instances are already destroyed. - Original Message - From: Pico Florin To: Apache AXIS C User List Sent: Tuesday, October 11, 2005 3:35 PM Subject: Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hi! Thank you Thomas. I seems to be more stable now. Regarding the code Axis::terminate() I've used in my application(a task that from time to time sends SOAP messages to SAP BC server) when destructor of the client is called and an "Assertion failure exception" is thrown in my engine task. If I don't put this code then everything is allright...Therefore, it is necessaru to use it? Is safety? Regards, Florin Yahoo! Messenger NEW - crystal clear PC to PC calling worldwide with voicemail
Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails?
Hi You need to include Axis.hpp in the main file. If I'm not wrong than you should call Axis::initialize(false); before you use axis objects. In my example I call this in my main loop before I created threads in which I created pBLP = new Soap(s.strURL.c_str(), APTHTTP1_1); When all threads are finished than you call Axis::terminate() (I think). - Original Message - From: Pico Florin To: Apache AXIS C User List Sent: Tuesday, October 11, 2005 2:16 PM Subject: Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hi! Thank you for your responses. I want to understand the code Axis::initialize(false); What is the exactly snippet code? What should I include? Thank you, Florin To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre.
Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails?
Hi Samisa Thank you for your notification. I didn't have that. I already tested that and it seems to be much more stable now. I still have some problems with stability under very difficult conditions (about 100 threads generated in 10 seconds). I'll try to find the position in code where this happens. Thank you Tomaz - Original Message - From: "Samisa Abeysinghe" <[EMAIL PROTECTED]> To: "Apache AXIS C User List" Sent: Monday, October 10, 2005 3:51 PM Subject: Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Tomaz Rotovnik wrote: Samisa thank you for response. I have right location of channel library dfined in "axiscpp.conf". When I run the program and calling one function every 300ms, it crashes (randomly) after some calls were done succesfully, but with the same error. Function is also synchronized (using mutex) so it can only be processed only one at the time. So I think the problem is in loading library very often, but I don't how to solve the problem. Well I happen to remember that there is one more thing that you should take note of when using threading. In the main program, before you start threads, you got to initialize the Axis platform: Axis::initialize(false); false here means that it is not server. Have you done this already in your threaded client? Thanks, Samisa... Best regards Tomaz - Original Message - From: "Samisa Abeysinghe" <[EMAIL PROTECTED]> To: "Apache AXIS C User List" Sent: Saturday, October 08, 2005 12:25 AM Subject: Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Tomaz Rotovnik wrote: Hi I've the same problem. Couple of days ago I send question about safe threading on client side. When I start debugging I found out that call m_pCall->initialize(CPP_DOC_PROVIDER)) causes exception. Then I enable possibility (uncomment) to print out possible exceptions in function Call:initialize(). Exception that I get was: DLOPEN FAILED in loading channel library. This basically means that the client cannot locate the channel library specified in axiscpp.conf. Have a look at the axiscpp.conf to see what you have set as the location of the channel library. Then ensure that it is there. You got to do the same for the parser library. Thanks, Samisa... I'm not sure yet if this exception was thrown by axis3\ChannelFactory.cpp file. Functions that are called are: openConnection calls setTransportProperty(CHANNEL_HTTP_DLL_NAME,... HTTPTransport::setTransportProperty calls LoadChannelLibrary I repeat experiment (multiple calls on separately created Call objects) couple of times with same error report. Now I'm looking for solution. Could you check if the problem is same with your code? - Original Message - *From:* Pico Florin <mailto:[EMAIL PROTECTED]> *To:* Apache AXIS C User List <mailto:axis-c-user@ws.apache.org> *Sent:* Friday, October 07, 2005 3:53 PM *Subject:* Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hi! I've tested my example in different ways of implementation. Some of them fail on this snippet if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER)) { return NULL; } leading to : "Unknown exception has occured". What are the reasons for this failures? Just to know better how to avoid this situation. Thank you, Florin How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos. *Get Yahoo! Photos* <http://us.rd.yahoo.com/mail/uk/taglines/default/photos/*http://uk.photos.yahoo.com/>
Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails?
Samisa thank you for response. I have right location of channel library dfined in "axiscpp.conf". When I run the program and calling one function every 300ms, it crashes (randomly) after some calls were done succesfully, but with the same error. Function is also synchronized (using mutex) so it can only be processed only one at the time. So I think the problem is in loading library very often, but I don't how to solve the problem. Best regards Tomaz - Original Message - From: "Samisa Abeysinghe" <[EMAIL PROTECTED]> To: "Apache AXIS C User List" Sent: Saturday, October 08, 2005 12:25 AM Subject: Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Tomaz Rotovnik wrote: Hi I've the same problem. Couple of days ago I send question about safe threading on client side. When I start debugging I found out that call m_pCall->initialize(CPP_DOC_PROVIDER)) causes exception. Then I enable possibility (uncomment) to print out possible exceptions in function Call:initialize(). Exception that I get was: DLOPEN FAILED in loading channel library. This basically means that the client cannot locate the channel library specified in axiscpp.conf. Have a look at the axiscpp.conf to see what you have set as the location of the channel library. Then ensure that it is there. You got to do the same for the parser library. Thanks, Samisa... I'm not sure yet if this exception was thrown by axis3\ChannelFactory.cpp file. Functions that are called are: openConnection calls setTransportProperty(CHANNEL_HTTP_DLL_NAME,... HTTPTransport::setTransportProperty calls LoadChannelLibrary I repeat experiment (multiple calls on separately created Call objects) couple of times with same error report. Now I'm looking for solution. Could you check if the problem is same with your code? - Original Message - *From:* Pico Florin <mailto:[EMAIL PROTECTED]> *To:* Apache AXIS C User List <mailto:axis-c-user@ws.apache.org> *Sent:* Friday, October 07, 2005 3:53 PM *Subject:* Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hi! I've tested my example in different ways of implementation. Some of them fail on this snippet if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER)) { return NULL; } leading to : "Unknown exception has occured". What are the reasons for this failures? Just to know better how to avoid this situation. Thank you, Florin How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos. *Get Yahoo! Photos* <http://us.rd.yahoo.com/mail/uk/taglines/default/photos/*http://uk.photos.yahoo.com/>
Re: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails?
Hi I've the same problem. Couple of days ago I send question about safe threading on client side. When I start debugging I found out that call m_pCall->initialize(CPP_DOC_PROVIDER)) causes exception. Then I enable possibility (uncomment) to print out possible exceptions in function Call:initialize(). Exception that I get was: DLOPEN FAILED in loading channel library. I'm not sure yet if this exception was thrown by axis3\ChannelFactory.cpp file. Functions that are called are: openConnection calls setTransportProperty(CHANNEL_HTTP_DLL_NAME,... HTTPTransport::setTransportProperty calls LoadChannelLibrary I repeat experiment (multiple calls on separately created Call objects) couple of times with same error report. Now I'm looking for solution. Could you check if the problem is same with your code? - Original Message - From: Pico Florin To: Apache AXIS C User List Sent: Friday, October 07, 2005 3:53 PM Subject: Why "m_pCall->initialize(CPP_RPC_PROVIDER))" fails? Hi! I've tested my example in different ways of implementation. Some of them fail on this snippet if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER)) { return NULL; } leading to : "Unknown exception has occured". What are the reasons for this failures? Just to know better how to avoid this situation. Thank you, Florin How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos. Get Yahoo! Photos
Safe threading - Client side
Hello I'm looking for some information's about running multiple calls in client side of axis. I'm using axis version 1.5. The problem is that when I call function again before it returns (in different thread) it returns exception when calling invoke method. In main loop there is call to create new object pBLP = new Soap(s.strURL.c_str(), APTHTTP1_1); and this instance is used each time when function "setConfirmTransaction" is called for example pCT = pBLP->ConfirmTransaction(sTr.szAuthReference); This calling part is implemented in callback function, which can be called many times (before we get receive from the server it can be called again (multiple threads)). I hope someone could give me some possible solution. Thanks in advance Tomaz Here is example of "setConfirmTransaction" function ## setConfirmTransaction* Soap::ConfirmTransaction(xsd__string Value0){ setConfirmTransaction* pReturn = NULL; const char* pcCmplxFaultName; pcCmplxFaultName = NULL; try{ if (AXIS_SUCCESS != m_pCall->initialize(CPP_DOC_PROVIDER)) return pReturn; m_pCall->setTransportProperty(SOAPACTION_HEADER , "http://tempuri.org/ConfirmTransaction"); m_pCall->setSOAPVersion(SOAP_VER_1_1); m_pCall->setOperation("ConfirmTransaction", "http://tempuri.org/WebService"); includeSecure(); applyUserPreferences(); m_pCall->addParameter((void*)Value0, "lTransactionID", XSD_STRING); if (AXIS_SUCCESS == m_pCall->invoke()) { if(AXIS_SUCCESS == m_pCall->checkMessage("ConfirmTransactionResponse", "http://tempuri.org/WebService")) { pReturn = (setConfirmTransaction*)m_pCall->getCmplxObject((void*) Axis_DeSerialize_setConfirmTransaction, (void*) Axis_Create_setConfirmTransaction, (void*) Axis_Delete_setConfirmTransaction,"ConfirmTransactionResult", 0); } } m_pCall->unInitialize(); return pReturn; } catch(AxisException& e) {.. ###