The Java provider - Writing the WSDL extension

The Java provider supports the invocation of a method on a local Java object.

 

Overview

To use the Java provider, we need the following binding specified in the WSDL:

 

Example

    <!-- Java binding --> 
    <binding .... > 
        <java:binding /> 
        <format:typeMapping style="Java" encoding="Java"/>? 
            <format:typeMap name="qname" formatType="nmtoken"/>* 
        </format:typeMapping> 
        <operation>* 
            <java:operation 
                methodName="nmtoken" 
                parameterOrder="nmtoken"
                returnPart="nmtoken"? 
                methodType="instance|constructor" /> 
            <input name="nmtoken"? />? 
            <output name="nmtoken"? />? 
            <fault name="nmtoken"? />? 
        </operation> 
    </binding>

In this example:

  • A question mark (?) means optional, and an asterisk (*) means 0 or more.

  • The name attribute of the <format:typeMap> element is a qualified name of a simple or complex type used by one of the Java operations.

  • The formatType attribute of the <format:typeMap> element is the fully qualified class name for the Java class to which the element specified by name maps.

  • The methodName attribute of the <java:operation> element is the name of the method on the Java object that is called by the operation.

  • The parameterOrder attribute of the <java:operation> element contains a white space-separated list of part names that define the order in which they are passed to the Java object method.

  • The methodType attribute of the <java:operation> element must be set to either instance or constructor. The value specifies whether the method that is invoked on the object is an instance method or a constructor for the object.

In the next example, the className attribute of the <java:address> element specifies the fully qualified class name of the object containing the method to invoke:

    <service ... > 
        <port>* 
            <java:address 
                className="nmtoken"/> 
        </port> 
   </service>