I have spent some time on this with no luck.
As Carsten had suggested, I commented out the
//writer.write("\tdelete [] p" + i + ";\n");
line in
src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java
This made AxisBench to run to some extent. However, garbage for string
values keeps on appearing. I feel this requires more time to be fixed.
(As I am using C++ server side for testing, I get the problem within
the server implementation, so it is kind of tough to debug. As per my
undestanding, the error is in the deserailizer, so the clients working
with Java servers should fail too in deserailizing strings)
Thanks,
Samisa...
On 7/8/05, John Hawkins <[EMAIL PROTECTED]> wrote:
>
> How close are we to closing this down?
>
> We need a stable code base for a customer update asap :-(
>
>
>
> "Carsten Blecken" <[EMAIL PROTECTED]> wrote on 08/07/2005 02:26:58:
>
>
> > Comments inline.
> >
> > Carsten
> >
> > -----Original Message-----
> > From: Mark Whitlock [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, July 07, 2005 7:29 AM
> > To: [email protected]
> > Subject: Fw: RE: Carsten: please help
> >
> >
> >
> >
> >
> >
> > Hi Carsten,
> > There are several problems happening here...
> > 1) AxisBench and ComplexLists fails
> > 2) The problems Dushshantha is seeing on the server
> > 3) Users will have to change their applications to new storage pointed at
> > by input complex types, so the complex type's destructor can delete it.
> > Previously users will either have used a local variable or new'ed and
> > deleted the storage.
> >
> > CB : Isn't this totally contained in the stub? And isn't this contained
> > to Complex Arrays?
> >
> > I agree with the direction that your fix is going in. To make it work,
> > constructors and set methods on complex types should make a deep copy of
> > the data, so that the storage is owned by the complex type and the
> complex
> > type's destructor can delete it. If we do this on complex types, then it
> > also needs to be done on arrays, AnyType, base64Binary, hexBinary,
> > nillable, etc. This is part of the problem that AXISCPP-149 is addressing
> > (which various people have tried to fix without any success including
> > myself).
> >
> > Reluctantly I propose that I back out your fix from BeanParamWriter until
> > AxisBench and ComplexLists work with your fix. Unless I hear from you
> > otherwise, I will do this first thing tomorrow morning.
> >
> > CB : I understand your sentiment and leave that up to you. Leaks are
> lower
> > priority than a working code and correct data. I just think
> > that fixing this is important and backing out again here (we've done
> > this before) will not make it easier.
> >
> > Mark
> > Mark Whitlock
> > IBM
> >
> > ----- Forwarded by Mark Whitlock/UK/IBM on 07/07/2005 14:07 -----
> >
>
> > "Carsten Blecken"
>
> > <[EMAIL PROTECTED]
>
> > sion.com>
> To
> > "Apache AXIS C Developers List"
>
> > 07/07/2005 03:05 <[email protected]>
>
> >
> cc
> >
>
> > Please respond to
> Subject
> > "Apache AXIS C RE: Carsten: please help
>
> > Developers List"
>
> >
>
> >
>
> >
>
> >
>
> >
>
> >
> >
> >
> >
> > Hi Mark,
> >
> > this is a tough one (but we need the destructors working).
> > I'll see how far I get. Thanks for looking at it.
> >
> > Carsten
> >
> > -----Original Message-----
> > From: Mark Whitlock [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, July 06, 2005 3:05 PM
> > To: [email protected]
> > Subject: Carston: please help
> >
> >
> >
> >
> >
> >
> > Hi Carston,
> > The fix you made to BeanParamWriter.java on 28/06/05 1.78 has broken a
> > couple of our tests and I am struggling to fix them. Please could you
> help
> > me. I agree with your fix - I think the generated classes should clean up
> > their storage in their destructor. Unfortunately this breaks the
> AxisBench
> > and ComplexLists tests. AxisBench is set up for unit testing - so that
> you
> > can run it without a server. Just specify
> >
> > ant -f test.xml -Dtest.name=AxisBench -DmockServer=true
> >
> > This will run it against a mock server which simply returns the response
> > message from AxisBench_ServerResponse.expected.
> >
> > AxisBench fails by corrupting strings and qnames within the
> > BenchBasicDataType and throwing an exception when storage is cleaned at
> the
> > end of the testcase. When I commented out the lines that you added to
> > BeanParamWriter, AxisBench passed. The problem occurs in deserialization
> > since it is the output object that is corrrupted. Looking in the trace, I
> > can see the strings being deserialized correctly by
> > SoapDeSerializer::getElementAsString, so it must later
> on that they are
> > corrupted. I am running on Windows, although I expect the problem will
> > occur on all platforms.
> >
> > The similarity between AxisBench and ComplexLists is that they both
> return
> > an array of complex types which contain string types that get corrupted.
> > There is code in Axis_Create_BenchBasicDataType that extends an array by
> > new'ing a new array, memcpy'ing the old array into the new array and
> > deleting the old array. I thought that this might be the problem since
> > ~BenchBasicDataType will delete the embedded strings when the old array
> is
> > deleted. So I commented out the delete (just to try it) but this did not
> > fix the problem. My guess is that the problem is in this area.
> >
> > Do you have any thoughts on what the problem might be?
> > Any help would be greatly appreciated,
> > Thanks,
> > Mark
> > Mark Whitlock
> > IBM
> >
> >
>