cornercorner
FeaturesPluginsDocs & SupportCommunityPartners

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:

  1. 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.
  1. 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.
  • Image:add-web-service_WebServiceManagerDesignSpecs.png
  • 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.
  1. 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>
  • Image:web-service-actions_WebServiceManagerDesignSpecs.png
  • User right click on an operation node and do <Test Method>
  • Image:operation-actions_WebServiceManagerDesignSpecs.png
  • 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>.
  • Image:test-web-service-method_WebServiceManagerDesignSpecs.png
  1. 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.
  1. 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:

  • Image:web-services-manager_WebServiceManagerDesignSpecs.png

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