Hi all. We've been thinking on how to properly have porttype composition defined in WSDL and implemented in a web service, with some practical restrictions of our own. The reason we post the issue here is that we would like to understand how Axis deals with the limitations of WSDL 1.1 we found, and how the Java2WSDL tool can be a help.
Please make additional comments on our approach and possible alternatives if
you have some.
Thanks in advance,
Ricardo
Question: how to compose portTypes?
Goal: have one endpoint implementing multiple portTypes.
Constraints:
We have several portTypes, describing various aspects
of a service:
- ServiceBase with a getVersion() method
- File with create() and readDir() methods
- Delegation with a doDelegation() method
To simplify the life of the clients we only want to have
_one_ endpoint exposed. We cannot assume that all clients
would use our client code with some magical discovery of
associated endpoints.
ServiceBase and Delegation is described by WSDL files.
File is described by a Java class and we use Axis 1.2's
Java2WSDL to generate WSDL from it.
Discussion:
According to our understanding of WSDL 1.1 (
implemented by Axis and gSOAP) portType cannot extend
other portTypes (it is a feature coming in WSDL 2.0).
Also a port cannot have multiple portTypes (as it is linked with
one binding, which is linked with one portType), so an
endpoint can have only one portType associated with it.
Given these constraints we need a single portType,
which merges the methods of ServiceBase, File and
Delegation.
According to our understading we cannot do this merge
in pure WSDL, so we need to do some pre-processing
(see Globus Toolkit 4 also).
The question is if it is worth doing at WSDL level,
using some funny XSLT?
Or is it possible to do this merge using Axis'
Java2WSDL --input or --importSchema options?
smime.p7s
Description: S/MIME cryptographic signature
