axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lilantha Darshana" <>
Subject RE: provider="CPP:RPC" , provider = "C:RPC"
Date Fri, 17 Oct 2003 12:50:10 GMT
How does the wrapper/function table is loaded from a shared lib to the axis 
address space.? in both cases i.e. when it is the case of C and when it is C++.

The interface to the dynamic linking mechanism is not available for any 
function with C++ linkage for Unix domain shared libs (*.so) If you intend 
for your library to be loaded with the "dlopen" interface, then the external 
interfaces must have C linkage, which precludes the use of C++ features. 
C++ linkage may still be used for symbols internal to the library. 

Hence, the loading either a wrapper/table of pointers should be done 
through known interface which has C linkage, which will be decided by using 
the wsdd provider info? right...

Is this a single interface or two interfaces that decide which need to invoke
based on the language the webservice is written?

So I think this decision can be made programmatically... without having a 
wsdd info. Lets discuss.


All programmers are optimists
 - Frederick P. Brooks, Jr.

-----Original Message-----
From: Susantha 
Sent: Friday, October 17, 2003 4:44 PM
Subject: Re: provider="CPP:RPC" , provider = "C:RPC"

In the Axis C++ architecture a wrapper acts as a provider. And at this
moment we generate wrappers in only C++. This generated wrapper (by the
WSDL2Ws tool) will be almost same for both C and C++ skeletons except the
"extern metho()" lines and where the wrapper calls the actual skeleton
There are known interfaces between Axis and this wrapper through which the
wrapper and Axis calls each other (IMessageData, IWrapperSoapSerializer,
IWrapperSoapDeSerializer, BasicHandler etc).

But above architecture always needs a C++ compiler even if the skeleton is
in C (web service is in C).

We plan to solve above problem by having wrappers generated in C itself for
C skeletons. Then web service developer will need only a C compiler to
develop and deploy a C web service.

The same issue is there at the client side too. And we plan to solve in the
same way.

But how do we get rid of the above mentioned interfaces ??? they are C++ and
C wrappers cannot use them ????

The solution we have in mind is to use KNOWN FUNCTION POINTER TABLES.

Then the Axis and the C wrapper will have set of known function pointer
tables that serves the same purpose of the interfaces in C++ wrappers.

I hope with above solution we can compile and link a web service using only
C compiler and a linker. Now we have a .dll or .so.

Now when the AxisEngine is going to load this web service the AxisEngine has
to know whether this is a C or CPP web service. This information will be in
the server.wsdd (provider="CPP:RPC" , provider = "C:RPC").

In case of C web service AxisEngine passes it a function pointer table.
In case of C++ web service AxisEngine passes it an interface (as it is done

This is how we have figured out to do this at the moment and your feedback
and suggestions are welcome.

Also ANY VOLUNTEER to manually write a COM wrapper ???????????????????????



----- Original Message -----
From: "Lilantha Darshana" <>
To: <>
Sent: Thursday, October 16, 2003 8:29 PM
Subject: RE: provider="CPP:RPC" , provider = "C:RPC"

What is the difference between CPP:RPC & C:RPC??

I guess one of this would be enough instead of two
provider types.


Debian GNU/Linux (kernel 2.4.21-rc1)

The primary difference [...] is that the Java program will reliably and
obviously crash, whereas the C Program will do something obscure
-- Java Language Tutorial

-----Original Message-----
From: Tom Jordahl []
Sent: Thursday, October 16, 2003 8:21 PM
To: ''
Subject: RE: provider="CPP:RPC" , provider = "C:RPC"

Sounds like a reasonable thing to do.

Tom Jordahl
Macromedia Server Development

-----Original Message-----
From: Dimuthu Leelarathne []
Sent: Wednesday, October 15, 2003 6:00 AM
Subject: provider="CPP:RPC" , provider = "C:RPC"

 Hi all,

 Deployment descriptor for axis-java services specifies it's provider as
provider="java:RPC" in the wsdd. Similarly we think of providing
provider="CPP:RPC" , provider = "C:RPC" for axis-cpp and axis-c
implementations. What do you think about it ?


View raw message