JSR-181 Object Model
The implementation separates all aspects of JSR-181 from runtime-specifics such as input and output processing. The implementation of the JSR-181 processor enforces rules, default values, etc. as required by the specification document; however, it does not make any assumptions about any specific runtime. In order to abstract from runtime-specific details, the JSR-181 implementation uses an object model that is closely tied to the specification and that is independent from the target runtime.
Figure 1 shows the object model that is built around three main classes: WebServiceTYPEMetadata, WebServiceMETHODMetadata and WebServicePARAMETERMetadata.
Figure 1: Jsr181ObjectModel.
These three classes represent the Java objects that can be annotated with the JSR-181 annotations: TYPE, METHOD and PARAMETER. Moreover, these classes model the containment hierarchy that is implied by JSR-181: Web services expose Web methods, Web methods may have Web parameters.
Note that while most annotations in each container are optional (can be "null"), a WebService, annotation must be present in WebServiceTYPEMetadata, a WebMethod in WebServiceMETHODMetadata, and a WebParam in WebServicePARAMETERMetadata.