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><https://svn.apache.org/repos/asf/webservices/axis2/branches/java/WSDL_2_0> Thanks, Keith
<<attachment: classDiagram.jpg>>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]