Contents

1.Functionality

1.1Types Of Classes

1.2Programming Languages

1.3Encoding Style

1.4Style Of the Service

1.5Supports for Making Simple Custom Types

2.Architecture

2.1 Out Line

2.2 Mediator WsContext

2.3 Generator

2.4 Flow Of Execution

2.5 Sequence Diagram

3.Dependencies on Axis Java tool

1. Functionality

The tool should be able to generate different types of Wrappers and Skeletons for the server side and client’s stubs for the client’s Side.WSDL2Ws tool in Axis C++ is written in Java.

      1.1 Types Of Classes

The tool should start with a WSDL document and generate following classes.

·       WSDL2WS tool is used for building the following C/C++ components

                   o Server side – Skeletons and Wrappers

                   o Client side – Stubs

                        >      > WSDL2WS tool that generates wrappers which are used to deploy the Service in the Axis C++ engine. (Please refer the Wrapper Specification for more information)

The generated Wrappers perform the following functions. These wrappers act as RPC Providers.

o Serialization

o Deserialization

o Method invocation

       1.2 Programming Languages

The tool should be able to generate classes for

       • C++

       • C

The tool should be extensible to support other programming languages if required.

       1.3 encoding style

The tool should be able to support SOAP1.2 encoding style and extensible to support other encoding styles as well.

      1.4 Style Of the Service

The tool should be able to generate classes for following styles

• RPC

• Document

• Messaging

       1.5 Supports for making simple custom types

Tool generates Wrappers for custom types in following conditions

• Generates the method signatures of the types (serialize(), deserialize()) so that developer    can write serialize desirialize code in most efficient way.

• Generates the complete wrappers for WSDL types like struts

• Generates the complete wrappers for Array of any simple or WSDL types like struts

2.Architecture

      2.1 Outline

The tool takes a top down approach. It starts with a wsdl document and generates all the classes necessary to deploy the web service. It generates

• Skeleton (wrapper class)

• Wrapper classes for complex types

• Server side and client Side stubs
The tool can be extensible to generate Service classes to be published For more information about the generated classes please refer to the architecture documentation.

  2.1 Mediator WsContext

The WSDL file and the user options are processed by the WSDLWs. The WSDL creates a class called wsContext(WebServiceContext) which is the runtime representation of the processed data. This wsContext passes to the generators. The generators extract the information from the wsContext and creates the files.The wsContext acts as a mediator and creates a loosely coupled system.

wsContext has following components

1. ServiceInfo – information about service

2. WrapperInfo – information about wrapper options

3. TypeMap – information about custom types

   2.2 Genarator

Generator generates a class which depends on the options, It contains a class called SourceWriter and the concrete implementation of the SourceWriter decides what the Genarator generates. The SourceWriter factory creates a correct type of generator which depends on the options.

   2.4 flow of execution

1.WSDL file and user options are processed by the WSDL2Ws and WSContext object is created.

2. WebServiceGenaratorFactory will create WebServiceGenarator which depends on the service style

3. Then the WebServiceGenarator will create a right set of Generators to create the set of files

4.Each generator will invoke SourceWriter which is capable of writing each type of file. Rest of the logic is upto the developer to decide (He has all the needed info as WsContext).

   2.5 Sequence Diagram

Dependencies on Axis Java tool

The document below describes the areas where Apache Axis C++ is dependant upon the Axis Java tool.

The Axis jars given below are used as they are in the Axis Java tool:


    axis.jar
    commons-discovery.jar
    commons-logging.jar
    jaxrpc.jar
    saaj.jar
    wsdl4j.jar
    xml-apis.jar

"SchemaUtils.java" and "ElementDecl.java" files have been overridden and their original implementations are no longer used even though they exist in the above mentioned jars.

No classes have been extended at the present time.

Except for "SchemaUtils.java" and "ElementDecl.java" the rest of the code has been developed for the Axis C++ tool and is not present in the current Axis Java tool.