<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../../../wtp.xsl"?>

<html>
<head>
<meta name="root" content="../../../../../" />
<title>JST Web Services Design Documents</title>
</head>
<body>

<h1>Design document for the Web Services Wizard Framework</h1>

<h2>Credits</h2>

<table cellspacing="5" cellpadding="2" border="1">
<tr valign="top">
<td>Enhancement</td>
<td>
<a
	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=89082">
	89082
</a>
<br/>
<a
	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=89083">
	89083
</a>
</td>
</tr>
<tr valign="top">
<td>Version</td>
<td>1.0 Draft</td>
</tr>
<tr valign="top">
<td>Last Updated</td>
<td>2005.03.21</td>
</tr>
<tr valign="top">
<td>Target Release</td>
<td>WTP 1.0</td>
</tr>
<tr valign="top">
<td>Target Milestone</td>
<td>M4</td>
</tr>
<tr valign="top">
<td>Contributors</td>
<td>
Gilbert Andrews<br/>
Chris Brealey<br/>
Kathy Chan<br/>
Rupam Kuehner<br/>
Peter Moogk<br/>
Seng Phung-Lu<br/>
</td>
</tr>
</table>

<h2>Index</h2>

<ol>
<li><a href="#overview">Overview</a></li>
<li><a href="#requirements">Requirements</a></li>
	<ol>
	<li><a href="#r1">R1 - End to end Web service (client) wizards</a></li>
	<li><a href="#r2">R2 - Web service runtime extensibility</a></li>
    <li><a href="#r3">R3 - Web service implementation extensibility</a></li>
	<li><a href="#r4">R4 - Web service test extensibility</a></li>	
	<li><a href="#r5">R5 - Web service publish extensibility</a></li>	
	</ol>
<li><a href="#concepts">Conceptual Design</a></li>
<li><a href="#details">Detailed Design</a></li>
</ol>

<h2><a name="overview"/>1.0 - Overview</h2>

<p>
The Web service tools in the WTP provide extensible Web service (and client) 
wizards that allow end users to create/publish and discover/consume 
Web services. Much of what the user sees in the wizards including such things 
as the supported Web service runtimes, servers, J2EE levels, module types, 
and wizard pages is contributed through extension points. The goal of this 
document is to present a high-level design of this extensible Web service (client) 
wizard framework.
</p>

<h2><a name="requirements"/>2.0 - Requirements</h2>



<h3><a name="r1"/>R1 - End to end Web service (client) wizards</h3>
<p>
End users of WTP can use the Web service (client) wizards
to discover, develop, assemble, deploy, install, run, and test 
Web services (clients).
</p>

<h3><a name="r2"/>R2 - Web service runtime extensibility</h3>
<p>
Extenders of WTP can contribute Web service runtimes to the 
Web service (client) wizard along with all the tasks and wizard 
pages needed to develop, assemble, deploy, install, run, and announce
Web services (clients) for a contributed runtime.
</p>

<h3><a name="r3"/>R3 - Web service implementation extensibility</h3>
<p>
Extenders of WTP can contribute Web service (client) implementation types 
to the Web service (client) wizard along with a UI browser to aid the user 
in locating artifacts of that type.
</p>

<h3><a name="r4"/>R4 - Web service test extensibility</h3>
<p>
Extenders of WTP can contribute Web service (client) test 
facilities to the Web service (client) wizard along with 
associated wizard pages.
</p>

<h3><a name="r5"/>R5 - Web service publish extensibility</h3>
<p>
Extenders of WTP can contribute Web service publish facilities 
to the Web service wizard along with associated wizard pages.
</p>

<h2><a name="concepts"/>3.0 - Conceptual Design</h2>

<p>
The Web service (client) wizard framework (called framework from here on)
guides users through end-to-end discovery, creation, test, and publish of 
Web services and Web service clients. The framework
divides the process of creating Web services (clients) into nine phases:
discover, develop, assemble, deploy, install, run, test, publish, and announce.
The activities performed in each of these phases can be further divided into
those that are common to all Web service runtimes (generic activities) and 
those that are specific to each Web service runtime (specific activities). The
framework performs the generic activities and delegates to the Web service runtime
extension to perform the specific activities. Outlined below is a brief description
of each of the nine phases and examples of generic and specific activities.
<br/><br/>
<ul>
<li><b>Discover:</b><br/>
Select the implementation
artifact, such as a Java bean or stateless session EJB.
The kinds of artifacts available to the user can be extended using the Web
services (client) implementation extensibility point. The framework comes with 
Java Bean and EJB extensions.
</li>
<br/>
<br/>
<li><b>Develop:</b><br/>
Develop the WSDL definition and implementation of the Web service. 
Provide deployment specific information needed by the Deploy phase. Generic
activities include the creation of modules which will contain the generated
code. Web service runtime extensions should provide the develop tasks specific 
to the extension.
</li>
<br/>
<br/>
<li><b>Assemble:</b> <br/>
Assemble and configure modules into a module, such as an EAR, that 
can be installed on the target server. Generic
activities include the association of modules to EARs. Extenders should 
perform tasks specific to the Web service runtime, such as any additional 
modules that need to the created and configured and any module
dependencies that need to be established.
</li>
<br/>
<br/>
<li><b>Deploy:</b><br/>
Generate the deploy artifacts. Framework delegates entirely to the 
Web service runtime extension.
</li>
<br/>
<br/>
<li><b>Install:</b><br/>
Install and configure the module on the target server. Installing the
module on the server is a generic activity. Web service runtime 
specific install tasks might include modifying the server configuration.
</li>
<br/>
<br/>
<li><b>Run:</b><br/>
Start the Web service (client) by starting the server. Specific tasks? Not sure.
</li>
<br/>
<br/>
<li><b>Test:</b><br/>
Test the Web service (client). Framework allows the user to choose from an
extensible list of test facilities. Examples are the Web services explorer
and the Generated JSPs.
</li>
<br/>
<br/>
<li><b>Publish:</b><br/>
Publish the Web service. Framework allows the user to choose from an
extensible list of publish facilities (e.g. Web services explorer).
</li>
<br/>
<br/>
<li><b>Announce:</b><br/>Announce the Web service to the user. Framework has a boiler-plate
Announce page that which announces things such as the WSDL URL and endpoint URL.
Web service runtime extensions can optionally override this boiler-plate announce 
page to provide their own.
</li>
</ul>

<hr WIDTH="100%"/>
<br/>
<b>3.1 WebServiceRuntime Extension Point</b>
<br/>
<br/>
A Web service runtime can be loosely defined as a SOAP engine which manages 
Web services (clients) and also prescribes the manner in which they are to
be created (from the develop phase to the run phase). Web service runtime 
characteristics can vary widely in terms of their supported specification levels
(e.g. Servlet, J2EE), Web servers (e.g. Tomcat, JBoss), implementations 
(e.g. Java bean, EJB) and scenarios (e.g. bottom-up, top-down, client). An extender
of WTP can contribute a new Web service runtime to the framework with the following 
XML (Please note: Element and attribute names are not final. They are for descriptive
purposes only.)
<p><img src="89083/WSRTExtensionXML.jpg" height="540" width="720"></img></p>
<p>
<ul>
<li><b>org.eclipse.jst.ws.wsImpl</b> - extend to contribute implementation types of 
Web services WTP comes with Java bean and EJB implementation extensions defined. </li>
<li><b>org.eclipse.jst.ws.wsClientImpl</b> - extend to contribute implementation types 
of Web service clients. WTP comes with the Java proxy extension defined.</li>
<li><b>org.eclipse.jst.ws.serviceType</b> - extend to contribute a unique combination
of a Web service implementation type and Web service creation scenarios: bottom-up
and top-down.
<ul>
<li>implId: is the id of the org.eclipse.jst.ws.wsImpl extension this serviceType 
supports</li>
<li>buModuleTypes: a list of ids representing the module types
this serviceType supports for bottom-up Web service creation.</li>
<li>tdModuleTypes: a list of ids representing the module types
this serviceType supports for top-down Web service creation.</li>
</ul>
</li>
<li><b>org.eclipse.jst.ws.clientType</b> - extend to identify module types that
support a Web service client implementation type 
<ul>
<li>implId: is the id of the org.eclipse.jst.ws.wsClientImpl extension this clientType 
supports</li>
<li>moduleTypes: a list of ids representing the module types
this clientType supports</li>
</ul>
</li>
<li><b>org.eclipse.jst.ws.webServiceRuntime</b> - extend to contribute a Web service runtime(WSRT)
<ul>
<li><b>label</b> - the translatable label for this WSRT.</li>
<li><b>serviceTypes</b> - a space separated list of id's of serviceTypes supported 
by this WSRT. This WSRT will only be shown to the user if it supports the selected 
Web service implementation type and scenario. </li>
<li><b>clientTypes</b> - a space separated list of id's of clientTypes supported 
by this WSRT. This WSRT will only be shown to the user if it supports the selected 
Web service client implementation type.</li>
<li><b>servletLevels</b> - a space separated list of servlet levels supported 
by this WSRT (e.g. 23 24). Used to determine supported servers if runtimes and
servers attributes are missing. The attribute need not be present for WSRT's
that support all servlet levels or to which servlet levels do not apply.</li>
<li><b>j2eeLevels</b> - a space separated list of J2EE levels supported by this 
WSRT (e.g. 13 14). These are exposed as choices to the user and used to 
determine supported servers if runtimes and servers attributes are missing.
The attribute need not be present for WSRT's
that support all J2EE levels or to which J2EE levels do not apply. </li>
<li><b>runtimes</b> - a space separated list of id's of runtimes (defined in server APIs) 
supported by this WSRT. These are used to determine supported servers if
the servers attribute is missing.</li>
<li><b>servers</b> - a space separated list of server factory id's (defined in server APIs) supported by this WSRT.
These are exposed as choices to the user. Extenders can be as generic or as specific in their specification of servers as they
desire. If the WSRT will function on any server that satisfies the servlet and/or
J2EE specification levels specified, the best approach may be to omit the runtimes
and servers attributes. This causes the framework to expose support for all servers
which support the specification levels. If the WSRT specifies specific server factory ids
in the servers attribute, the framework will only expose support for those servers.</li>
<li><b>class</b> - the fully qualified name of class which implements IWebServiceRuntime (illustrated below) 
and has a zero argument constructor. Extenders must implement IWebServiceRuntime by extending
AbstractWebServiceRuntime and providing implementations for getWebService(), getWebServiceClient().
They can also override the implementation of the announce(..) method if they wish
to override the boiler-plate announce capabilities of the framework. 
<p><img SRC="89083/diagramW-wsrt.jpeg" height="441" width="548"/></p>
Based on the Web service runtime selected by the user, the framework will 
activate the corresponding extension by constructing the provided class (e.g. FooWebServiceRuntime). 
It will then obtain an IWebService or IWebServiceClient from this class, to which
it will delegate all Web service runtime specific activities in the develop, deploy,
assemble, install, and run phases of Web service (client) creation. IWebService is 
illustrated below. IWebServiceClient is very similar to IWebService, the main difference being that
IWebServiceClientInfo does not have an endPointURL field.
<p><img src="89083/diagramB-ws.jpeg" height="640" width="690"/></p>
</li>
</ul>
</li>
</ul>
</p>

<hr WIDTH="100%"/>
<br/>
<b>3.2 Discovery Extension point</b>
<br/>
<br/>
Once the user has chosen the implementation type, the framework requires
them to discover and select a suitable artifact to begin creation of the
Web service (client). The nature of the artifact being discovered depends
on the selected scenario: bottom-up or top-down Web service creation, or client creation.
Web service
client creation must begin with the discovery of Web services (covered in the 
Web Service Finder framework).  
Top down Web service development, by definition, involves starting with WSDL. This
is hard-wired into the framework and not something extenders can change. 
Bottom-up Web service development involves starting with the artifact that
implements the Web service. Extenders can contribute new Web service implementation
types through the org.eclipse.jst.ws.wsImpl extension point. The org.eclipse.jst.ws.discovery
extension point allows the contribution of UI browse mechanisms for Web service
implementation types. The platform comes with discovery extensions for Java beans
and stateless session EJBs. If the selected implementation type does not have a 
corresponding discovery extension, the framework will allow the user to select
resources in the workspace. The discovery extension point is illustrated below.
<p><img SRC="89083/DiscoveyDiagram.jpg" height="540" width="720"/></p>

<hr WIDTH="100%"/>
<br/>
<b>3.3 Test Extension point</b>
<br/>
<br/>
Once the Web service (client) has been created, the framework gives the user the
option of testing it using a test facility of their choice. The test extension 
point enables the contribution of test facilities to the framework. These are exposed
to the user in the wizards and pop-up actions. The platform comes with two test 
facilities, namely the Web Services Explorer and the Generated Sample JSPs.
An extender must provide the following information in the extension XML (also illustrated
below).
<ul>
<li><b>id</b> - a unique id</li>
<li><b>label</b> - a translatable label</li>
<li><b>testWSDL</b> - "yes" if this test facility can test a Web service with only the WSDL
as input. "no" otherwise.</li>
<li><b>wsClientImplIds</b> - a space separated list of ids of Web service client
implementation types that this test facility can test. The framework will only expose
this test facility if the implementation type of the client being tested is in this
list.</li>
<li><b>moduleTypes</b> - a space separated list of module type ids. Extensions
use this attribute to tell the framework which type(s) of modules its 
generated artifacts can be put in. For example, JSPs must be put in a
Web module. </li>
<li><b>methodsNeeded</b> - "yes" if this test facility needs as input
the list of operations/methods to be tested.</li>
<li><b>class</b> - the fully qualified name of a class which implements IWebServiceTester
and has a zero argument constructor. If this test facility is selected, the framework
will construct this class and call the generate(..) and launch(..) methods to obtain
the Commands needed to generate and launch the test facility.</li>
</ul>
<p><img SRC="89083/TesterDiagram.jpg" height="540" width="720"/></p>
<hr WIDTH="100%"/>
<br/>
<b>3.4 Publish Extension point</b>
<br/>
<br/>
Once the Web service has been created and (optionally) tested, the framework
gives the user the option of publishing the Web service using a facility
of their choice. Publication refers to the act of making the Web service
visible and accessible to a broader internet or intranet audience.
The publish extension point enables the contribution of
publish facilities to the framework. These are exposed to the user in the wizard.
The platform comes with one publication facility, the Web services Explorer, which
enables the user to publish to UDDI registries. 
An extender must provide the following information in the extension XML (also 
illustrated below)
<ul>
<li><b>id</b> - a unique id </li>
<li><b>label</b> - a translatable label </li>
<li><b>class</b> - the fully qualified name of a class which implements the IWebServicePublisher
interface. If this publication facility is selected, the framework will construct this
class and call the publish(..) method to obtain the command needed to publish
the Web service. </li>
</ul>

<p><img SRC="89083/PublisherDiagram.jpg" height="540" width="720"/></p>



<hr WIDTH="100%"/>
>>Coming soon....<br/>
<ul>
<li>How the framework allows Web service runtimes to provide wizard pages</li>
</ul>
</p>

<h2><a name="details"/>4.0 - Detailed Design</h2>

<p>
Write any detailed, internal design material here.
</p>

</body>
</html>