You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by keith chapman <ke...@gmail.com> on 2007/01/20 03:17:32 UTC
[AXIS2] WSDL 2 integration and Proposal for supporting multiple endpoints
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
Re: [AXIS2] WSDL 2 integration and Proposal for supporting
multiple endpoints
Posted by Sanjiva Weerawarana <sa...@opensource.lk>.
+1 from me for merging.
Sanjiva.
On Sat, 2007-01-20 at 07:47 +0530, 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: axis-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-dev-help@ws.apache.org
--
Sanjiva Weerawarana, Ph.D.
Founder & Director; Lanka Software Foundation; http://www.opensource.lk/
Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
Director; Open Source Initiative; http://www.opensource.org/
Member; Apache Software Foundation; http://www.apache.org/
Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org
Re: [AXIS2] WSDL 2 integration and Proposal for supporting multiple endpoints
Posted by keith chapman <ke...@gmail.com>.
Hi deepal,
Thanks for your comments. The WSDL can specify the formatting of the output
message based on the endpoint that the message came to. In order to format
the output message correctly we have to know which binding the message came
to. Does that answer your concern?
Thanks,
Keith
On 1/22/07, Deepal Jayasinghe <de...@opensource.lk> wrote:
>
> Hi keith;
> Few comments from me.
>
> > 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.
>
> +1
>
> >
> > 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.
>
> I can not understand why do we need to support (I mean process) multiple
> endpoint at the server side , as I know at the server side its up to the
> server to decide what are the endpoint that can support. In the wsdl you
> can say that you need to have endpoint for jms but server does not have
> capability of supporting that , so in that situation what is the server
> suppose to do with the new proposal ?
>
> >
> >
> > *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.
>
> I'd rather like to write a new Dispatcher to dispatch this particular
> scenario
>
> Thanks
> Deepal
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-dev-help@ws.apache.org
>
>
Re: [AXIS2] WSDL 2 integration and Proposal for supporting multiple
endpoints
Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi keith;
Few comments from me.
> 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.
+1
>
> 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.
I can not understand why do we need to support (I mean process) multiple
endpoint at the server side , as I know at the server side its up to the
server to decide what are the endpoint that can support. In the wsdl you
can say that you need to have endpoint for jms but server does not have
capability of supporting that , so in that situation what is the server
suppose to do with the new proposal ?
>
>
> *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.
I'd rather like to write a new Dispatcher to dispatch this particular
scenario
Thanks
Deepal
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org
Re: [AXIS2] WSDL 2 integration and Proposal for supporting multiple
endpoints
Posted by Eran Chinthaka <ch...@opensource.lk>.
-----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: axis-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-dev-help@ws.apache.org
-----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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org