WebServiceManagerDesignSpecs
Web Service Manager
Overview:
Currently designer tools of web service consumers such as Visual Web Form, BPEL Designer and RESTful Web Service, each has its own work-flow and UI to present web service providers. This inconsistent experience would create confusion and learning difficulty to IDE transitioning between these tools.
Consolidating the work-flow and UI for consumption of web-service would eliminate this inconsistency and streamline our code base and documentation. This document describes the use-cases and design of the service manager in the 'Service' tab. The initial design is largely derived from the Web Services node provided by Visual Web Pack.
Use-Cases:
- Single repository of partners or well-known web services for drag-n-drop consumption by various designers and editors.
- User would see a Web Service Manager node structure under Service Tab, pre-populated with StrikeIron partner most popular web services.
- User could drag-n-drop the node onto any supporting editors to generate consumer-specific code.
- Necessary reference to pre-generated to client-stub jar files also added to the project.
- The same service could be consumed by different projects hence user productivity is improved.
- Currently, we have JSF designer, java and JSP editors accept the drop from operation or web service nodes. To have drop support for BPEL designer is also straight-forward.
- Scalable hierachy of frequently-used web services list customizable by individual developer
- Individual developer at some point in time have to work on project that consumes a certain number of web services.
- User creates a web service group under the manager node and add needed services.
- User could When the project is over, user could delete the whole group without affect the registration of the services.
- The (future) manager could keep a Recently Used folder for automatic populating of frequently use services.
- Examine and quickly try out operations from a deployed web service.
- User right click on one of the partner web service and od <View WSDL>
- User right click on an operation node and do <Test Method>
- A dialog would prompt for input parameter values.
- User click <Submit> the output area will show the result.
- After trying out, user could easily remove the web service by right click on the web service node and do <Delete>.
- Search for partner web services(future):
- User would be able to search through list of services offered by our partners to identify the services needed for the application they are developing.
- Support for RESTful web service consumption (future).
Web Service manager work flows for exposure, organize and drag-n-drop consumption could be also applicable for WADL-based RESTful web services.
Architecture
Node Hierarchy:
Design Summary:
- WSDL and WADL base component definition files are register by partner NBM layer file under folder: <verbatim>RestComponents/<group-name></verbatim>
- For each added or declared web service, the manager build metadata model and persist it under <userdir>/config/WebServices.
- The web service client stub jars are also build and stored in NetBeans userdir.
- Consumer-specific artifact or metadata are also generated and persisted through consumer implementation of WebServiceManagerExtension.
- Consumer-specific also have opportunity to contribute its own actions to each of the nodes.
- If necessary, consumer implementation could contribute to the flavor of the transferable data.
Current API:
- WebServiceDescriptor: persistent manager-specific web service metadata
- WebServiceMetaDataTransfer: common transferable and flavor declaration
- WebServiceListModel, WebServiceGroup, WebServiceData
Current SPI:
- WebServiceManagerExt: extendAddedWebService, cleanupRemovedWebService, getMethodActions, getPortActions, getWebServiceAction...
- WebServiceTransferManager: addDataFlavors
Issues
Some of the following issues needs to be addressed in short term in NetBeans 6.0 time frame:
- Handle and clean up properly error condition happen when adding or removing services.
- Move the test client to generic functionality.
- Improve the test client to be more friendy, with input and output documents.
- Handle switching between JDK 1.5 and JDK 1.6


