antelder 2002/09/20 01:42:56 Modified: java/README_files/wsdl_extensions java_extension.html Log: Correct some minor spelling and gramatical errors Revision Changes Path 1.2 +12 -12 xml-axis-wsif/java/README_files/wsdl_extensions/java_extension.html Index: java_extension.html =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/README_files/wsdl_extensions/java_extension.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- java_extension.html 17 Sep 2002 15:56:40 -0000 1.1 +++ java_extension.html 20 Sep 2002 08:42:56 -0000 1.2 @@ -7,9 +7,9 @@ <body> <h2>Java binding</h2> <hr> -<p>The java binding is a WSDL binding that allows abstract functionality in the abstract service description (messages, operastions and port types) to be mapped to functionality offered by a java class directly. This means that a java class can be described using WSDL, and can be accessed as a WSDL-described service through WSIF.</p> +<p>The Java binding is a WSDL binding that allows abstract functionality in the abstract service description (messages, operations and port types) to be mapped to functionality offered by a Java class directly. This means that a Java class can be described using WSDL, and can be accessed as a WSDL-described service through WSIF.</p> -<p>The java binding extends WSDL with the following extensibility elements:</p> +<p>The Java binding extends WSDL with the following extensibility elements:</p> <p><tt><pre> <definitions .... > @@ -47,24 +47,24 @@ <ul> <li><b><tt>java:binding</tt></b> -<p>This indicates that the binding is a java binding.</p></li> +<p>This indicates that the binding is a Java binding.</p></li> -<li><b><tt>format:typemapping</tt></b> -<p>This element allows the specification of a mapping from abstract types used in WSDL message parts (within the abstract service description) to java types that can represent the same information. The style attribute is used to say something about the target type system (i.e. the native type system being used to represent the abstract information); in the case of the java type system the value here must be "Java". This use of this attribute allows this extension to be reused for other kinds of bindings. The encoding attribute must be a URI which is used to denote the specific way in which the native type corresponds to the abstract type. We define a special encoding, the "Java" encoding, with the rules that tell us how to create a java class corresponding to an abstract schema type that can be used through the WSDL java binding. Details on the "Java" encoding follow. Having the encoding attribute allows us to map abstract types to java types in other convenient ways by using a customized encoding.</p></li> +<li><b><tt>format:typeMapping</tt></b> +<p>This element allows the specification of a mapping from abstract types used in WSDL message parts (within the abstract service description) to Java types that can represent the same information. The style attribute is used to say something about the target type system (i.e. the native type system being used to represent the abstract information); in the case of the Java type system the value here must be "Java". The use of this attribute allows this extension to be reused for other kinds of bindings. The encoding attribute must be a URI which is used to denote the specific way in which the native type corresponds to the abstract type. We define a special encoding, the "Java" encoding, with the rules that tell us how to create a Java class corresponding to an abstract schema type that can be used through the WSDL Java binding. Details on the "Java" encoding follow. Having the encoding attribute allows us to map abstract types to Java types in other convenient ways by using a customized encoding.</p></li> <p><b>Java encoding</b><br> -The java encoding used by WSIF is unspecified. The reason it does not need to be specified is that encoding information is useful only when the information contained within the java object is transformed in some way - serialized to a SOAP message, or converted to a representation in another type system for example. If all we do with a WSIF message containing parts belonging to the java type system is invoke the corresponding java service, we don't need to do anything more than verify that each message part is is represented using a java object of the correct type (as specified by the typemapping element in the java binding).<br> -Of course, we envisage the need for transforming messages from one representation to another, but we leave the complete specification of the java encoding for a later release.</p> +The Java encoding used by WSIF is unspecified. The reason it does not need to be specified is that encoding information is useful only when the information contained within the Java object is transformed in some way - serialized to a SOAP message, or converted to a representation in another type system for example. If all we do with a WSIF message containing parts belonging to the Java type system is invoke the corresponding Java service, we don't need to do anything more than verify that each message part is represented using a Java object of the correct type (as specified by the typemapping element in the Java binding).<br> +Of course, we envisage the need for transforming messages from one representation to another, but we leave the complete specification of the Java encoding for a later release.</p> <li><b><tt>format:typemap</tt></b> -<p>Each typemap element maps an abstract type to a type in some more convenient type system; in the case of the java binding this is the java type system. The typeName attribute is a qualified name for the abstract type being mapped (this must be one of the predefined schema types recognised in WSDL, or a type defined under the <types> section in the WSDL). The elementName attribute may be used to specify an element instead of a type (since WSDL message parts can be described either way). The formatType attribute is the java type corresponding to that abstract type or element. It values must be one of the primitive java types (char, byte, short, int, long, float, double) or the fully qualified name of a java class.</p></li> +<p>Each typemap element maps an abstract type to a type in some more convenient type system; in the case of the Java binding this is the Java type system. The typeName attribute is a qualified name for the abstract type being mapped (this must be one of the predefined schema types recognised in WSDL, or a type defined under the <types> section in the WSDL). The elementName attribute may be used to specify an element instead of a type (since WSDL message parts can be described either way). The formatType attribute is the Java type corresponding to that abstract type or element. Its value must be one of the primitive Java types (char, byte, short, int, long, float, double) or the fully qualified name of a Java class.</p></li> <li><b><tt>java:operation</tt></b> -<p>This element maps an abstract WSDL operation to a java method. The methodName attribute specifies the name of the java method corresponding to the abstract operation. The parameterOrder attribute is similar to and overrides the paramterOrder specification in the abstract operation. It specifies the ordering of the input message parts for the invocation; in the java binding case it identifies the method signature. Having a parameterOrder attribute here allows us to map an abstract operation to a java method even if their signatures aren't compatible in the ordering of parts. The returnPart is that part of the abstract output message which corresponds to the return value of the java method. The methodType attribute specifies whether the java method is a contructor, a static method or an instance method.</p></li> +<p>This element maps an abstract WSDL operation to a Java method. The methodName attribute specifies the name of the Java method corresponding to the abstract operation. The parameterOrder attribute is similar to and overrides the paramterOrder specification in the abstract operation. It specifies the ordering of the input message parts for the invocation; in the Java binding case it identifies the method signature. Having a parameterOrder attribute here allows us to map an abstract operation to a Java method even if their signatures aren't compatible in the ordering of parts. The returnPart is that part of the abstract output message which corresponds to the return value of the Java method. The methodType attribute specifies whether the Java method is a constructor, a static method or an instance method.</p></li> <li><b><tt>java:address</tt></b> -<p>This element is an extension under the WSDL port element that allows specification of a java object as an endpoint for a service available via the java binding. The port whose address is specified this way must be associated with a java binding only.</p> -<p>The className attribute specifies the fully qualified name of the java class to be used for service invocation. The optional classPath attribute specifies the classpath to be set prior to invocation, and the optional classLoader attribute specifies the class loader to be used for loading the service class. If invoking an instance method, the service user can load and instantiate the service class; it is upto the service provider to insure that a public no-argument constructor is available. All other java methods/constructors used for mapping abstract operations must also be publicly available in the service class.</p> +<p>This element is an extension under the WSDL port element that allows specification of a Java object as an endpoint for a service available via the Java binding. The port whose address is specified this way must be associated with a Java binding only.</p> +<p>The className attribute specifies the fully qualified name of the Java class to be used for service invocation. The optional classPath attribute specifies the classpath to be set prior to invocation, and the optional classLoader attribute specifies the class loader to be used for loading the service class. If invoking an instance method, the service user can load and instantiate the service class; it is up to the service provider to insure that a public no-argument constructor is available. All other Java methods/constructors used for mapping abstract operations must also be publicly available in the service class.</p> </ul> <h4>Example:</h4> @@ -176,6 +176,6 @@ </service> </definitions></pre></tt></p> -<p>In the above example, an address book service is offered through the java class <tt>addressbook.wsiftypes.AddressBook</tt>. The service offers two variants of the <tt>addEntry</tt> operation. One takes an input message consisting of a full name and address and the other accepts an input message with a first name and last name (as separate message parts) and an address. Both of these operations are mapped to a java method called <tt>addEntry</tt>, but there are different parameter lists (this is an overloaded method in the implementing class). Finally, the abstract operation <tt>getAddressFromName</tt> is mapped to a java method of the same name. The types <tt>typesns:address</tt> and <tt>xsd:string</tt> used during method invocations are mapped to java types <tt>addressbook.wsiftypes.Address</tt> and <tt>java.lang.String</tt> respectively. Note that the type <tt>typesns:phone</tt> does not need to be mapped to a java type since it is contained within the address type which is represented by a known java class. WSIF does not need to know how this class represents the information described in the schema type if that is being done is service invocation. If we needed to inspect the information in the WSIF message and transform it in some way, we would need details on how the java class represents the type information (see the above discussion on the java encoding).</p> +<p>In the above example, an address book service is offered through the Java class <tt>addressbook.wsiftypes.AddressBook</tt>. The service offers two variants of the <tt>addEntry</tt> operation. One takes an input message consisting of a full name and an address and the other accepts an input message with a first name, a last name (as separate message parts), and an address. Both of these operations are mapped to a Java method called <tt>addEntry</tt>, but there are different parameter lists (this is an overloaded method in the implementing class). Finally, the abstract operation <tt>getAddressFromName</tt> is mapped to a Java method of the same name. The types <tt>typesns:address</tt> and <tt>xsd:string</tt> used during method invocations are mapped to Java types <tt>addressbook.wsiftypes.Address</tt> and <tt>Java.lang.String</tt> respectively. Note that the type <tt>typesns:phone</tt> does not need to be mapped to a Java type since it is contained within the address type which is represented by a known Java class. WSIF does not need to know how this class represents the information described in the schema type if all that is being done is service invocation. If we needed to inspect the information in the WSIF message and transform it in some way, we would need details on how the Java class represents the type information (see the above discussion on the Java encoding).</p> <p>All the methods needed for invocation are instance methods, so a client would need to create an instance of the service class. Since no classpath or class loader is specified, the client can assume that there are no special service requirements in this regard, and can just load and instantiate the class and begin using the address book service it implements.</p> </body></html>