axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Jordahl <>
Subject RE: Memory management issues with Axis C++ and CAX-RPC :)
Date Fri, 19 Sep 2003 13:53:16 GMT

+1, what you describe sounds reasonable.


It might be neat to have a switch I could turn on that would tell the runtime to free things
in the cases where it can, say after it serializes an object for a request going on the wire
(client or server).


Tom Jordahl
Macromedia Server Development

-----Original Message-----
From: Susantha Kumara [] 
Sent: Thursday, September 18, 2003 10:45 AM
Subject: Memory management issues with Axis C++ and CAX-RPC :)


Hi all,


As you know in C and C++ we have to manage memory our selves. For web services frameworks
written in java most of the rules (specifications) are in JAX-RPC. But for C++ there is no
such an specification drawn. So I think as opensource developers of C/C++ web service framework
we have to come up with such an specification for C/C++. Other than the similar specifications
in JAX-RPC in this CAX-RPC :) we have to have specification for memory management.


In this context what I mean by memory mangement is related to serialization and deserialization.


For an example in Axis C++ now, the Deserializer creates and populates the objects and passes
to the web service and its the responsibility of the web service to delete them.


In Axis C++ we use the same Serialization/Deserialization code for both server side and the
client side.


IMO we have to have set of specifications for memory management at both client side and the
server side.


What we have thought of at the moment is as follows,


Client Application<--->ClientAxisEngine<---transport--->ServerAxisEngine<--->Server
Application(web service).


For the client-side,

*Objects for serialization (outbound message) are created and deleted (or freeed) by the client

*Objects for deserialization (inbound message) may be created by both client application and
the ClientAxisEngine. But deleted (or freeed) by client application.


For the server side,

*Objects for serialization (outbound message) are created by the web service (server application)
and deleted by the ServerAxisEngine.

*Objects for deserialization (inbound message) are created by ServerAxisEngine and deleted
by the web service (server application).


please put on your C/C++ hats and help us to take the correct decision.


we are looking forward for your support in this and is greatly appreciated.





View raw message