-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Adding a little bit more in to what Keith had suggested.

Inside Axis2, there were lot of bias towards WSDL 1.1, which we tried to
minimize as much as possible. At the same time, since some time we
wanted to have a consistent model, we used WSDL 2.0 model. For example,
we selected AxisBindingOperation, AxisEndpoint, etc.,
But still, in the runtime, we use same Axis* objects to hold information.

We had to change WSDL builders, deployment, data binding templates and
helpers, dispatching mechanism, etc., during this process. We tested our
implementation to some extent, using the killer WSDL 2.0 documents
provided by WSDL 2.0 working group (Thanks Jonathan Marsh).

Please comment on the proposal as well as the implementation we have
done so far.

Thanks,
Chinthaka

keith chapman wrote:
> Hi devs,
> 
> As most of you might know we (Chinthaka and myself) created a branch [1]
> to work on Axis2 to improve it for WSDL 2.0 support. We have
> successfully completed most of the work now. The rest can be completed
> within a week or so.  So we thought we better discuss  the  changes we
> had to do before merging the branch to the trunk. We had to do a couple
> of notable changes to Axis2 in order to  do the improvements in a
> cleaner way. We did not want to hack axis2 to provide WSDL 2 support.
> 
> The following briefing might help those who are not very familiar with
> WSDL 2.0.
> 
> Approximate mapping of WSDL 2.0 components to WSDL 1.1
> Note : This mapping is just for explanatory purposes.
> 
> WSDL 2.0                     WSDL 1.1
> 
> endpoint                     port
> binding                       binding
> interface                     portType
> 
> 
> WSDL 2.0 uses lots of defaulting rules and thrives on the principle of
> reuse (Which enables the user to write a WSDL 2.0 document without
> specifying too many things). A service can have multiple endpoints, an
> endpoint has a single binding (a binding may be used by several
> endpoints). A binding may be bound to an interface (Generic Bindings can
> also exist where the binding is not bound to an interface).
> 
> In order to maximize the benefits of WSDL is it clear that axis2 needs
> to support multiple endpoints. Currently axis2 does not support multiple
> services or multiple endpoints. Axis2 just processors the first endpoint
> and deploys the service. While integrating WSDL 2.0 support to axis2 it
> was clear that we needed to support multiple endpoints.
> 
> *Proposal for supporting multiple endpoints.*
> 
> Introduce the following classes (class diagram attached)
> 
> AxisEndpoint - Hold information about an endpoint
> 
> AxisBinding - Hold information about a Binding
> 
> AxisBindingOperation - Hold information about a binding operation. 
> AxisOperation will hold general information  pertaining to an operation
> . All additional information (Binding specific information) will be
> captured by this class. It will also have a link to its corresponding
> AxisOperation.
> 
> AxisBindingMessage - Hold information about a binding Message.
> AxisMessage will hold general information  pertaining to
> a message . All additional information (Binding specific message
> information) will be captured by this class. It will also have a
> link to its corresponding AxisMessage
> 
> In correspondence to the inclusion of the new binding hierarchy,
> WSDL20ToAxisServiceBuilder and WSDL11ToAxisServiceBuilder will have to
> be updated to pump the new classes. (We have already updated
> WSDL20ToAxisServiceBuilder.  WSDL11ToAxisServiceBuilder is in the
> process of been updated). Also AxisServiceBasedMultiLanguageEmitter will
> have to be updated to draw information from the new binding hierarchy
> (This has also been completed).
> 
> *Effects on Dispatching*
> 
> With the introduction of multiple endpoints we should have a way of
> dispatching messages to the correct endpoints now. The mechanism we used
> was to have the default URIs as 
> $Prefix/ServiceName.EndpointName[/OperationName][/Other Stuff]. It will
> be nice if we can include something like
> 
> <endpoints>
>     <endpoint alias="NSPath" name="" />*
> </endpoints>?
> 
> in the services.xml. which will make the request url look like
> $Prefix/alias[/OperationName][/Other Stuff]
> 
> We have updated RequestURIBasedDispatcher to dispatch messages to the
> correct endpoint based on the above. The allServices map in
> AxisConfiguration has been updated to map ServiceName.EndpointName to
> the corresponding  AxisService. Once we find the correct AxisService we
> add the name of the endpoint (the endpoint that the message came to) as
> a property to the message context.
> 
> We would like to know your comments on this before going ahead and
> merging the WSDL 2.0 branch to the trunk.
> 
> [1] :
> https://svn.apache.org/repos/asf/webservices/axis2/branches/java/WSDL_2_0
> <https://svn.apache.org/repos/asf/webservices/axis2/branches/java/WSDL_2_0>
> 
> Thanks,
> Keith
> 
> ------------------------------------------------------------------------
> 
> 
> ------------------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFtA2ojON2uBzUhh8RApkuAJ9d/cnQVaMwZ+N+eZtS27Slj5MxGgCdFrWG
bfJtOAmKupKrSK0UhLnLMNo=
=EiHi
-----END PGP SIGNATURE-----


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to