Netbeans APIs for Web Services
WS Architecture Background
Historically multiple APIs were created in Netbeans to facilitate and unify the Web Services support in multiple project types.
Initially in
Netbeans 5.0 the support was created over the
JAX-RPC architecture, later in
Netbeans 5.5 the support was extended for
JAX-WS 2.0.
The JAX-WS 2.0 is used, by default, to build and consume web services in Netbeans 6.0. The Netbeans WS support is, in fact, the integration of JAX-WS architecture into the Netbeans environment.
We are trying to establish Netbeans as a best tool for JAX-WS architecture so we need to simplify and arrange the Web Services(JAX-WS) APIs to be more usable and generic.
Currently the JAX-WS service creation is enabled for these project types :
- Web Application (Java EE 5 project)
- EJB Project (Java EE 5 project)
JAX-WS Client is enabled in
- Web Application (Java EE 5 project)
- EJB Project (Java EE 5 project)
- (Plain) Java Application (jdk1.5 and later)
- Enterprise Client Project (Java EE 5 project)
Netbeans 5.5 still supports the JAX-RPC service creation and consumption. The reason for this is, especially, the need to support web services also for SJSAS 8.1.
The JAX-RPC service creation is supported in
- Web Application (J2EE 1.4 project)
- EJB Project (J2EE 1.4 project)
JAX-WS Client creation is enabled (only) in
- Web Application (J2EE 1.4 project)
- (Plain) Java Application (jdk1.4 and later)
WS Modules
There are 4 categories of WS modules in Netbeans :
- WS API Modules
- JAX WS Model
- Web Services DD API
- JAXWS APIs
- Web Service APIs
- Web Service Client APIs
- WS Core Modules
- WS Registry
- WS Core
- WS Developer
- WS Customization
- Other WS Modules (External)
- Web Services Interoperability Technology Support
- TCP/SOAP monitor
WS APIs Client Modules
There are several WS API client modules :
- Web Project
- J2SE Project
- EJB Project
- Enterprise Client Project
- J2EE Refactoring
- Creator - JSF Project
- Netbeans Mobility End2End
The dependences between modules are mainly from the bottom to the top - core modules depend on API modules that depend on Library modules.
WS Architecture Issues
JAX-RPC and JAX-WS are Mixed
What's not nice, currently, the JAX-RPC and JAX-WS supports are mixed together in several Netbeans (WS) modules.
The JAX-WS support was incrementaly added to multiple WS API modules and WS "Core" modules, formerly supporting JAX-RPC.
Specifically the JAX-WS and JAX-RPC supports are mixed in :
- Web Service Client APIs
- WS Core
- WS Developer
It would be desirable to separate strictly the JAX-WS Support from JAX-RPC support.
API's are not stable
All API modules (except Webservices DD API) are note fully feathered APIs. They are declared as Friend APIs with a list of friends depending on them.
It would be nice to drive the Netbeans API process to make those API modules
stable.
Specifically for modules related to JAX-WS :
- JAXWS APIs
- Web Service Client APIs (need to separate this API from JAX-RPC first)
The needs for JAX-WS API stabilization are the following :
- there are too many friends (9-14) of these modules (the number is dangerously high)
- JAX-WS is a base infrastructure for other SUN WS architectures (WSIT), and we should similarly accept this principle in Netbeans WS architecture
- JAX-WS API modules should be more stable and intuitive
- API javadoc is not sufficient
WS Modules Description
1. JAX-RPC 1.6 (IDE Cluster)
- Netbeans library module containing JAX-RPC 1.6 jar files
- available in Netbeans Library Manager
- programatically added to project (J2SE Project) when required
- Friends: none
2. JAX-WS 2.0 (IDE Cluster)
- Netbeans library module containing JAX-WS 2.0 jar file
- available in Netbeans Library Manager
- programatically added to project (J2SE Project) when required
- Friends: JAX WS Model, Identity Profile API (External). JAXB Project (External)
3. JAX-WS Model (Friend API, IDE Cluster)
- contains model providing information about WSDL : services, ports, operations, parameters and their mappings to Java.
It's a bridge to internal JAX-WS wsdl model (com.sun.tools.ws.processor.model.*)
(advantage : modules don't depend on JAX-WS internal libraries directly)
- model for Netbeans WS Project's Configuration file (jax-ws.xml)
jax-ws.xml contines the information about jax-ws services and clients in project
- used to generate WS related build targets
- used by project's infrastructure to generate WS logical view
- Friends: JAXWS APIs, WS Client APIs, J2SE Project, Web Project, EJB Project, Appl.Client Project, WS Core, WS Developer, WS Customization, J2EE Refactoring, Identity Profile UI (external), WSIT configuration (external), Creator JSF Project (External), TCM/SOAP monitor (external)
package: org.netbeans.modules.websvc.api.jaxws.wsdlmodel (API)
package: org.netbeans.modules.websvc.api.jaxws.project (API)
- generic WS project support utilities (WSUtils, GeneratedFilesHelper)
package: org.netbeans.modules.websvc.api.jaxws.project.config (API)
- model for Netbeans WS Project's Configuration file (jax-ws.xml)
4. Web Services DD API (Stable API, Enterprise Cluster)
- access to web services deployment descriptor (webservices.xml)
- used only with JAX-RPC support
package org.netbeans.modules.j2ee.dd.api.webservices (API)
5. JAXWS APIs (Friend API, IDE Cluster)
- support for JAX-WS Service Creation (both from Java and from WSDL)
- Support for JAX-WS Web Services view
- support for JAX-WS Creation for abstract WSDL (missing service/binding elements)
- Friends: Web Project, EJB Project, WS Core, WS Developer, WS Customization, J2EE Refactoring, Identity Profile UI (external), WSIT configuration (external), Creator JSF Project (External)
package: org.netbeans.modules.websvc.jaxws.api (API)
- API for getting JAXWSSupport, JAXWSView
- WsdlWrapperGenerator, WsdlWrapperHandler - utilities to generate/process abstract wsdl
package: org.netbeans.modules.websvc.jaxws.spi (SPI)
- SPI to implement JAXWSSupport, JAXWSView
6. Web Service APIs (Friend API, Enterprise Cluster)
- support for JAX-RPC Service Creation (both from Java and from WSDL)
- Support for JAX-RPC Web Services view
- Support for JAX-RPC wscompile options editor (available in project customizer)
- Friends: Web Project, EJB Project, WS Core, WS Developer, J2EE Refactoring, Identity Profile UI (external), Creator JSF Project (External)
package: org.netbeans.modules.websvc.api.webservices (API)
- API for getting JAX-RPC Service Support, JAX-RPC Service View
- wscompile options panel interface
package: org.netbeans.modules.websvc.spi.webservices (SPI)
- SPI to implement JAX-RPC Service Support, JAX-RPC Service View
7. Web Service Client APIs (Friend API, IDE Cluster) - JAX-WS should be separated from JAX-RPC
- support for JAX-WS/JAX-RPC Client creation
- Support for JAX-RPC/JAX-WS Client view
- Support for JAX-RPC client wscompile options editor (available in project customizer)
- Friends: J2SE Project, Web Project, EJB Project, Appl.Client Project, WS Core, WS Customization, WSIT configuration (external), Creator JSF Project (External), TCM/SOAP monitor (external), Mobility End2End (external)
package: org.netbeans.modules.websvc.api.client (API)
- API for getting JAX-RPC Client Support, JAX-RPC Client View
- wscompile options panel interface
package: org.netbeans.modules.websvc.api.jaxws.client (API)
- API for getting JAX-WS Client Support, JAX-WS Client View
package: org.netbeans.modules.websvc.spi.client (SPI)
- SPI to implement JAX-RPC Client Support, JAX-RPC Client View
package: org.netbeans.modules.websvc.spi.jaxws.client (SPI)
- SPI to implement JAX-WS Client Support, JAX-WS Client View
8. WS Registry
- module that implements WS Registry
- test utility for web services (uses internal JAX-RPC classes)
- provides node stricture for JAX-RPC Client
9. WS Core - JAX-WS should be separated from JAX-RPC
- implementation of JAX-RPC/JAX-WS service/client view
- JAX-RPC/JAX-WS client wizards
- JAX-RPC/JAX-WS client code generation
- JAX-RPC/JAX-WS service/client actions - implementation
- WS handlers configuration
- WSDL Data Object, Data object for jax-rpc config filr
10. WS Developer - JAX-WS should be separated from JAX-RPC
- JAX-RPC/JAX-WS service wizards
- Handler wizards
- WS from WSDL service generator
11. WS Customization
- Multi View Editor for JAX-WS(wsdl) customization (for both service and client)
- data model for JAX-WS Customization