OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

uddi-spec message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Subject: Re: [uddi-spec] WSDL TN: Issue 2 - generation of wsdl:service


You say that the stub implementation is inherently different across
different tools but the interfaces that the application code should be
written to should not be, only the implementations.  JAX-RPC defines how to
map from WSDL to a Java interface and an application should be written to
that standard generated interface.

Note that JAX-RPC defines an interface that is generated from the WSDL
service definition as well as an implementation-specific class that
implements that (standard) interface, so any JAX-RPC compliant tool should
produce a generated service interface that includes the getHelloIFPort
method in your example, but the class that implements that interface will be
different in each one.

This allows you to change tool/runtime without having to change your code,
but relies on the other tools having the same WSDL file to be able to
generate compatible code, where "the same" means the same namespace name,
the same set of ports etc.

----- Original Message -----
From: "Wai-Kwong Sam LEE" <Sam.Lee@oracle.com>
To: "John Colgrave" <colgrave@hursley.ibm.com>
Cc: "uddi-spec" <uddi-spec@lists.oasis-open.org>
Sent: Thursday, November 21, 2002 5:11 PM
Subject: Re: [uddi-spec] WSDL TN: Issue 2 - generation of wsdl:service

> See <SL> at the end.
> John Colgrave wrote:
> > Claus,
> >
> > See below.
> >
> > John
> > ----- Original Message -----
> > From: "Von Riegen, Claus" <claus.von.riegen@sap.com>
> > To: "'John Colgrave'" <colgrave@hursley.ibm.com>; "uddi-spec"
> > <uddi-spec@lists.oasis-open.org>
> > Sent: Wednesday, November 20, 2002 3:41 PM
> > Subject: RE: [uddi-spec] WSDL TN: Issue 2 - generation of wsdl:service
> >
> >
> >
> >>John,
> >>
> >>Please find <CvR>my comments</CvR> below.
> >>
> >>Claus
> >>
> >>-----Original Message-----
> >>From: John Colgrave [mailto:colgrave@hursley.ibm.com]
> >>Sent: Mittwoch, 20. November 2002 12:11
> >>To: uddi-spec
> >>Subject: [uddi-spec] WSDL TN: Issue 2 - generation of wsdl:service
> >>
> >>
> >>This requirement was raised by Karsten, and I believe the current IBM
> >>tooling generates the deployment WSDL so it would seem to be a
> >>of at least Microsoft and IBM.  In general I can readily envision
> >>application development/deployment tools that will generate the
> >>information as a service is deployed.  If these tools work with UDDI,
> >>obvious thing for them to do would be to generate the UDDI metadata
> >>dynamically and add it to the registry.  To work with programming
> >
> > languages
> >
> >>such as Java however, they would need to produce the deployment WSDL so
> >
> > that
> >
> >>the correct service class etc. could be generated.
> >>
> >>If a different person wanted to use the deployment WSDL, I would think
> >>would be useful for them also to be able to generate it from the same
> >>registry using a tool.  This is the kind of thing that the current IBM
> >
> > tools
> >
> >>do.
> >>
> >><CvR>I'm not arguing against the generation of WSDL deployment documents
> >
> > in general. My issue is that I don't see a requirement so far to
> > the very same wsdl:service that was once described in the Web service
> > provider's WSDL deployment document previous to the registration of the
> > artifacts in UDDI.</CvR>
> >
> > <JC>
> > I think I have already described that the wsdl:service is used with
> > to generate a bunch of Java and the structure and operation of this Java
> > code depends on the namespace name and the port names, not to mention
> > ports that are part of the service, so unless you generate the same
> > deployment WSDL from UDDI you will not get the same Java code generated
> > two developers that happen to use two different tools will end up with
> > different Java interfaces to the same service, which is not good.
> >
> > Given that you have to have the same service namespace, the same service
> > name, the same set of ports, each with the correct local name, I am not
> > you could do anything but generate an equivalent, if not identical,
> > deployment WSDL.
> > <JC>
> >
> >>The namespace name and local name are required for the generation of the
> >>deployment WSDL for two reasons:
> >>
> >>1) The proposal on the table in the W3C WSDL group for equivalence is
> >>QName-based equivalence, so two WSDL services would be regarded as
> >>equivalent if they had the same namespace name and the same local name.
> >>Similarly for ports etc.  Assuming multiple people want to generate
> >>equivalent deployment WSDL from the same UDDI metadata, this means that
> >>have to capture the namespace name and the local name of each WSDL
> >>that might be compared.
> >>
> >><CvR>Assuming multiple people want to generate equivalent deployment
> >
> > from the same UDDI metadata, this means that the Web service provider
has to
> > separately publish the ports that are to be registered in UDDI. Each
> > resulting bindingTemplate can then be used by a Web service consumer to
> > generate corresponding deployment WSDL again. This is independent of the
> > fact whether or not the WSDL's namespaces and local names are captured
> > the bindingTemplate. The Web service consumer can choose any naming
> > convention for the deployment WSDL's service and port elements in order
> > generate proxies in the client infrastructure (this is the only reason I
> > think of why the Web service consumer might have to generate the
> > WSDL). What finally counts when the Web service is invoked at the Web
> > service provider's side is a valid message (specified by the WSDL
> > that arrives over a suitable protocol (specified by the WSDL binding) at
> > network address that was once spe!
> >
> >>cified by the Web service provider (in the WSDL port extension).</CvR>
> >
> >
> > <JC>
> > You can't do the generation at the port level.  See comments above and
> > another thread.
> >
> > You have to have the right namespace name(s) and port names, and you
have to
> > have the right set of ports if you want to be able to produce the same
> > code and have a single shared programming model for the service.
> >
> > You are right that what finally counts at the web service provider's
side is
> > what comes over the wire but you are adopting that limited WS-I
> > again. :-)
> > </JC>
> >
> >>2) The namespace name and local name are used, for example, in the
> >>generation of Java from WSDL, where the namespace name is mapped to a
> >>package and the local name is mapped to a class name, or just used with
> >
> > the
> >
> >>namespace name to identify something, a port for example, via a
> >>javax.xml.namespace.QName, so the QName is surfaced as part of the
> >>programming model.
> >>
> >><CvR>This seems to be a reasonable approach but I don't see a reason yet
> >
> > why we have to rely on the service's namespace and the port's local name
> > from the orginal deployment WSDL (see my comment above).</CvR>
> >
> > <JC>
> > Partly because somebody may have already produced the "master"
> > language artefacts from it, which is just a special case of the fact
that I
> > hope I have demonstrated that we can't leave it up to tools to just make
> > these names therefore they have to be stored in UDDI.  Given that we
have to
> > have them in UDDI they may as well be correct!
> > </JC>
> >
> <SL>
> John, could you elaborate more on the imporatnce of preserving port
> QName / service QName from a client's perspective?
> Take a simple helloWorld service as an example
> (used in Sun's JAXRPC tutorial)
> Assume
> 1. a developer gets a deployment WSDL that is fabricated by a UDDI tool
> (i.e., port QName and service QName are made up).
> 2. the developer wants to generate some client stub to invoke the service,
> What the developer will get:
> - a client interface : modeled based on the portType
> - An Stub that implmenets the client interface: generated
>    by the JAXRPC tool and is tool specific.
> - When a client invokes the Stub, he may need to write some code
>     like this (adapted from jax-rpc tutorial):
>      HelloIF hello = (new HelloWorld_Impl().getHelloIFPort());
>      hello.sayHello("Duke!");
> - In this scenario:
>    - the stub internally may rely on port QName / service QName,
>      but it is totally hidden from the developer's code.
>    - what gets sent on the wire (the actual SOAP message) is,
>      again, independent of the port QName / service QName.
> Now consider another devloper uses another JAX-RPC tool and
> another UDDI-tool to generate some client stub.
> The developer will get:
> - exactly the same client interface (since it's based on the same
> - the stub implementation (including naming, package, etc.) may
>    be different. But they are inherently different across
>    different jaxrpc tools. Furthermore, what gets sent on the
>    wire (the SOAP message) will exactly the same.
> Based on the above reasoning, I don't see why the service QName / port
> QName must be preserved for the purpose of generating  client stubs.
> I bet I am missing something. John, could you elaborate?
> </SL>

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Powered by eList eXpress LLC