You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by ch...@apache.org on 2006/01/05 10:25:50 UTC
svn commit: r366133 [2/10] - in /webservices/site/trunk/targets/axis2: ./
0_93/ 0_94/ 0_94/adb/ 0_94/adb/images/ 0_94/images/
0_94/images/archi-guide/ 0_94/images/faq/ 0_94/images/logos/
0_94/images/tools/ 0_94/images/tools/service/ 0_94/images/tools/w...
Added: webservices/site/trunk/targets/axis2/0_94/CodegenToolReference.html
URL: http://svn.apache.org/viewcvs/webservices/site/trunk/targets/axis2/0_94/CodegenToolReference.html?rev=366133&view=auto
==============================================================================
--- webservices/site/trunk/targets/axis2/0_94/CodegenToolReference.html (added)
+++ webservices/site/trunk/targets/axis2/0_94/CodegenToolReference.html Thu Jan 5 01:17:47 2006
@@ -0,0 +1,539 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - Code Generator Wizard - Eclipse Plug-in</title><style type="text/css" media="all">
+ @import url("./style/maven-base.css");
+
+ @import url("./style/maven-theme.css");</style><link rel="stylesheet" href="./style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/" id="projectLogo"><img alt="Apache Axis 2.0" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
+ Last published: 05 January 2006
+ | Doc for 0.94</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis_2_0"><h5>Axis 2.0</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="">Download Axis2</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="">Documentation</a><ul><li class="none"><a href="0_93/index.html">Version 0.93</a></li><li class="none"><a href="0_94/index.html">Version 0.94</a></li></ul></li><li class="expanded"><a href="overview.html">Get Involved</a><ul><li class="none"><a href="svn.html">Checkout the Source</a></li><li class="none"><a href="siteHowTo.html">Build the Site</a></li><li class="none"><a href="guidelines.html">Developer Guidelines</a></li><li cl
ass="none"><a href="refLib.html">Reference Library</a></li><li class="none"><a href="mail-lists.html">Mailing Lists</a></li><li class="none"><a href="faq.html">FAQ</a></li></ul></li><li class="none"><a href="thanks.html">Ackknowledgements</a></li><li class="expanded"><a href="">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Code_Generator_Wizard_-_Command_Line_Tool"></a><h2>Code Generator Wizard - Command Line Tool</h2><div class="subsection"><a name="Introduction"></a><h3>Introduction</h3><p>Just as old times there will be users who wish to use the command line
+version of the tool. This basic tool is implemented by the WSDL2Code class
+and just for the convenience in the java case (which would be the majority)
+there is another WSDL2Java class. One can choose to run the main classes
+directly or use one of the scripts to run the WSDL2Code and WSDL2Java
+appropriately. (the scripts are found in the bin directory of the binary
+distribution)</p></div><div class="subsection"><a name="Option_Reference"></a><h3>Option Reference</h3><table class="bodyTable"><tbody>
+ <tr class="b"><td width="50%">-uri <Location of WSDL></td><td width="50%">WSDL file location. This should point to a WSDL file in
+ the local file system</td></tr>
+ <tr class="a"><td width="50%">-o <output Location> :</td><td width="50%">output file location. This is where the files would be
+ copied once the code generation is done. If this option is omitted
+ the generated files would be copied to the working directory.</td></tr>
+ <tr class="b"><td width="50%">-l <language></td><td width="50%">Output language. Currently the code generator can
+ generate code in Java and CSharp. (CSharp support is experimental)
+ When omitted defaults to Java.
+
+ <p>Allowed options are</p>
+ <ul>
+ <li>java</li>
+ <li>cs</li>
+ </ul>
+ </td></tr>
+ <tr class="a"><td width="50%">-p <package name></td><td width="50%">The target package name. If omitted, a default package
+ (formed using the target namespace of the WSDL) will be used.</td></tr>
+ <tr class="b"><td width="50%">-a</td><td width="50%">Generate code only for async style . when this option
+ is used the generated stubs will have only the asynchronous
+ invocation methods. Switched off by default.</td></tr>
+ <tr class="a"><td width="50%">-s</td><td width="50%">Generate code only for sync style . When this option is
+ used the generated stubs will have only the synchronous invocation
+ methods. Switched off by default. When used with the -a option, this
+ takes precedence.</td></tr>
+ <tr class="b"><td width="50%">-t</td><td width="50%">Generates a test case. In the case of Java it would be
+ a junit test case. </td></tr>
+ <tr class="a"><td width="50%">-ss</td><td width="50%">Generates server side code (i.e. skeletons). Default is
+ off</td></tr>
+ <tr class="b"><td width="50%">-sd</td><td width="50%">Generates the service descriptor (i.e. server.xml).
+ Default is off. only valid with -ss, the server side code generation
+ option</td></tr>
+ <tr class="a"><td width="50%">-d</td><td width="50%">Specifies the Databinding framework. valid values are
+ xmlbeans,adb and none. Default is adb.</td></tr>
+<tr class="b"><td width="50%">-g</td><td width="50%">Genrates all the classes. This option is valid only with the
+-ss (server side code generation) option. When on, the client code (stubs) will also be generated
+along with the skeleton.
+</td></tr>
+
+ </tbody><tr class="a"><td width="50%">-u</td><td width="50%">
+Unwrap classes. This option specifies whether to unwrap the classes and generate seperate classes for
+the databinders.
+</td></tr></table></div></div><div class="section"><a name="Code_Generator_Wizard_-_Ant_Task"></a><h2>Code Generator Wizard - Ant Task</h2><p>The code generator also comes bundled with an Ant task. The ant task is
+implemented by the org.apache.axis2.tool.ant.AntCodegenTask class. Following
+are the ant task attributes.</p><div class="subsection"><a name="Ant_Task_Reference"></a><h3>Ant Task Reference</h3><table class="bodyTable"><tbody>
+ <tr class="b"><td width="50%" height="19">wsdlfilename</td><td width="50%" height="19">WSDL file location. Maps to the uri option
+ of the command line tool</td></tr>
+ <tr class="a"><td width="50%" height="76">output</td><td width="50%" height="76">output file location. This is where the
+ files would be copied once the code generation is done. If this
+ option is omitted the generated files would be copied to the working
+ directory. . Maps to the -o option of the command line tool</td></tr>
+ <tr class="b"><td width="50%" height="171">language</td><td width="50%" height="171">Output language. Currently the code
+ generator can generate code in Java and CSharp. (CSharp support is
+ limited) When omitted defaults to Java.
+
+ <p>Allowed options are</p>
+ <ul>
+ <li>java</li>
+ <li>cs</li>
+ </ul>
+
+ <p>Maps to the -l option of the command line tool</p>
+ </td></tr>
+ <tr class="a"><td width="50%" height="57">packagename</td><td width="50%" height="57">The target package name. If omitted, a
+ default package (formed using the target namespace of the WSDL) will
+ be used. Maps to the -p option of the command line tool.</td></tr>
+ <tr class="b"><td width="50%" height="75">asynconly</td><td width="50%" height="75">Generate code only for async style . when
+ this option is used the generated stubs will have only the
+ asynchronous invocation methods. Defaults to false if omitted Only
+ true and false are applicable as values. Maps to the -a option of the
+ command line tool.</td></tr>
+ <tr class="a"><td width="50%" height="16">testcase</td><td width="50%" height="16">Generates a test case</td></tr>
+ <tr class="b"><td width="50%" height="19">synconly</td><td width="50%" height="19">Generate code only for sync style . when
+ this option is used the generated stubs will have only the
+ synchronous invocation methods. Defaults to false if omitted. Only
+ true and false are applicable as values. Maps to the -s option of the
+ command line tool.</td></tr>
+ <tr class="a"><td width="50%" height="19">serverside</td><td width="50%" height="19">Generates server side code (i.e.
+ skeletons). Only true and false are applicable as values. Default is
+ false. Maps to the -ss option of the command line tool</td></tr>
+ <tr class="b"><td width="50%" height="18">generateserverxml</td><td width="50%" height="18">Generates server side code (i.e.
+ skeletons). Only true and false are applicable as values. Default is
+ false. Maps to the -sd option of the command line tool.</td></tr>
+ </tbody></table></div><div class="subsection"><a name="Example_build_file_using_the_custom_Ant_task"></a><h3>Example build file using the custom Ant task</h3><p>Following is an example ant build file that uses the custom Ant task.</p><p></p>
+ <div class="source"><pre><?xml version="1.0"?>
+<project name="CodegenExample" default="main" basedir=".">
+<target name="declare" >
+<taskdef name="codegen"
+ classname="org.apache.axis2.tool.ant.AntCodegenTask"
+ classpath="classes"/>
+</target>
+<target name="main" depends="declare">
+<codegen
+ wsdlfilename="C:\test\wsdl\CombinedService.wsdl"
+ output="C:\"
+ serverside="true"
+ generateserverxml="true"/>
+</target>
+</project>
+
+</pre></div>
+ <p>Notice the main target that uses the "codegen" task which will use the
+org.apache.axis2.tool.ant.AntCodegenTask class and run the code generation
+tool internally while passing the relevant arguments and do the proper
+generation. If a user types</p><p>>ant or >ant main</p><p>it will generate the serverside code and service.xml for the given WSDL
+file(C:\test\wsdl\CombinedService.wsdl) and the generated code will be
+written to C:\ directory.</p><p>For this Ant task to work the following jars need to be in the class
+path.</p><ul>
+ <li>axis-*.jar (from the Axis2 distribution)</li>
+ <li>axis-wsdl4j-1.2.jar (The WSDL4J implementation jar. Bundled with the
+ Axis2 distribution)</li>
+ <li>stax-api-1.0.jar (The StAX API's that contain the
+ javax.xml.namespace.QName class. This jar may be replaced by any other
+ jar that contains the javax.xml.namespace.QName implementation. However
+ Axis2 uses this class from the stax-api-1.0.jar which comes bundled with
+ the Axis2 distribution)
+ <p></p>
+ </li>
+</ul></div></div><div class="section"><a name="Invoking_the_Code_Generator_from_Ant"></a><h2>Invoking the Code Generator from Ant</h2><p>Since the users may find altering their ant class path a bit daunting they
+can also follow an easier technique. The code generator main class can be
+invoked directly through the build file.</p><p>Below is an example of a full build.xml needed to run WSDL2Java and
+generate the Java source files, compile the sources, and build an AAR file
+ready for deployment:</p>
+ <div class="source"><pre><!DOCTYPE project>
+
+<project name="wsdl2java-example" default="usage" basedir=".">
+
+ <property name="project-name" value="wsdl2java-example"/>
+ <property file="build.properties"/>
+
+ <property name="build" value="build"/>
+
+ <property name="src" value="src"/>
+ <property name="build.classes" value="build/classes" />
+
+ <path id="axis.classpath">
+ <pathelement location="build/classes" />
+ <fileset dir="${axis.home}/lib">
+ <include name="**/*.jar" />
+
+ </fileset>
+ <pathelement location="${build.classes}" />
+ </path>
+
+ <target name="usage" description="Build file usage info (default task)">
+ <echo message=" " />
+ <echo message="${project-name} " />
+
+ <echo message="-------------------------------------------------------" />
+ <echo message=" " />
+ <echo message="Available Targets:" />
+ <echo message=" " />
+ <echo message=" Compiling:" />
+ <echo message=" compile - Compiles the WSDL2Java source code" />
+
+ <echo message=" " />
+ <echo message=" Compiling client:" />
+ <echo message=" compile_client - Compiles the client source code" />
+ <echo message=" " />
+ <echo message=" Cleaning up:" />
+ <echo message=" clean - Delete class files" />
+
+ <echo message=" " />
+ <echo message=" WSDL:" />
+ <echo message=" wsdl2java - Generate source from WSDL" />
+ <echo message=" " />
+ <echo message=" AAR:" />
+ <echo message=" aar - Generate an .aar for deployment into WEB-INF/services" />
+
+ <echo message=" " />
+ <echo message=" Executing:" />
+ <echo message=" runLogin - Execute the runLogin client" />
+ </target>
+
+ <target name="prepare" >
+ <mkdir dir="${build.classes}" />
+
+ </target>
+
+ <target name="clean" >
+ <delete dir="${build}" />
+ <delete dir="${dist}" />
+ </target>
+
+ <target name="compile">
+ <echo message="Compiling wsdl2 files"/>
+
+ <javac
+ srcdir="output"
+ destdir="${build.classes}"
+ deprecation="true"
+ failonerror="true" debug="true"
+ >
+
+ <classpath refid="axis.classpath"/>
+ </javac>
+
+ </target>
+
+ <target name="wsdl2java" depends="clean,prepare">
+ <delete dir="output" />
+ <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+ <classpath refid="axis.classpath"/>
+ <arg value="-uri"/>
+
+ <arg file="wsdl/LoginEndpoint.wsdl"/>
+ <arg value="-ss"/>
+ <arg value="-sd"/>
+ <arg value="-o"/>
+ <arg file="output"/>
+ <arg value="-p"/>
+
+ <arg value="org.example.types"/>
+ </java>
+
+ <!-- Move the schema folder to classpath-->
+ <move todir="${build.classes}">
+ <fileset dir="output">
+ <include name="**/*schema*/**/*.class"/>
+
+ <include name="**/*schema*/**/*.xsb"/>
+ </fileset>
+ </move>
+
+ </target>
+
+ <target name="jar_wsdl" depends="compile">
+
+ <jar jarfile="lib/axis2_example_wsdl.jar" >
+ <fileset dir="${build}/classes" />
+ </jar>
+ </target>
+
+ <!-- build an .aar file for axis2 web services -->
+ <target name="aar" depends="compile">
+
+ <delete dir="${build.classes}/META-INF" />
+ <mkdir dir="${build.classes}/META-INF" />
+ <copy todir="${build.classes}/META-INF" >
+ <fileset dir="output/service_descriptors/LoginEndpoint" >
+ <!-- axis2 web services definitions file -->
+ <include name="services.xml"/>
+
+ </fileset>
+ <fileset dir="wsdl" >
+ <include name="LoginEndpoint.wsdl"/>
+ </fileset>
+ </copy>
+ <jar jarfile="dist/LoginEndpoint.aar" >
+
+ <fileset dir="${build.classes}" />
+ </jar>
+ </target>
+
+ <target name="compile_client">
+ <echo message="Compiling client files"/>
+
+ <javac
+ srcdir="src"
+ destdir="${build.classes}"
+ deprecation="true"
+ failonerror="true" debug="true"
+ >
+
+ <classpath refid="axis.classpath"/>
+ </javac>
+
+ </target>
+
+ <target name="runLogin" depends="compile_client" description="run webLogin client">
+
+ <echo message="running the webLogin client" />
+ <java classname="org.client.LoginClient" >
+ <classpath refid="axis.classpath"/>
+ </java>
+ </target>
+
+</project>
+
+</pre></div>
+ <p>The above build.xml depends on a build.properties file which defines
+'axis.home', such as:</p><p>axis.home=/home/username/axis2-0.93-bin/</p><p>The above build.xml example also assumes three empty directories exist,
+'dist', 'lib', and 'src'.</p><p>Below is a validated WSDL Document following the Document/Literal Style.
+The name of this file matches the name used in the WSDL2Java ant task above,
+LoginEndpoint.wsdl</p>
+ <div class="source"><pre><?xml version="1.0" encoding="UTF-8"?>
+
+<definitions name="LoginService" targetNamespace="http://login" xmlns:tns="http://login" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://login/types">
+
+ <types>
+ <schema targetNamespace="http://login/types" xmlns:tns="http://login/types" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema">
+ <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+ <element name="returnWebLoginElement">
+ <complexType>
+ <sequence>
+
+ <element ref="tns:soap_session_idElement"/>
+ <element ref="tns:web_user_nameElement"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="webLoginElement">
+
+ <complexType>
+ <sequence>
+ <element ref="tns:user_nameElement"/>
+ <element ref="tns:user_passwordElement"/>
+ </sequence>
+ </complexType>
+
+ </element>
+ <element name="user_nameElement" type="xsd:string"/>
+ <element name="user_passwordElement" type="xsd:string"/>
+ <element name="soap_session_idElement" type="xsd:string"/>
+ <element name="web_user_nameElement" type="xsd:string"/>
+</schema></types>
+
+ <message name="LoginEndpoint_webLogin">
+ <part name="parameters" element="ns2:webLoginElement"/>
+ </message>
+ <message name="LoginEndpoint_webLoginResponse">
+ <part name="result" element="ns2:returnWebLoginElement"/>
+ </message>
+
+ <portType name="LoginEndpoint">
+ <operation name="webLogin">
+ <input message="tns:LoginEndpoint_webLogin" name="LoginEndpoint_webLogin"/>
+ <output message="tns:LoginEndpoint_webLoginResponse" name="LoginEndpoint_webLoginResponse"/>
+ </operation>
+ </portType>
+
+ <binding name="LoginEndpointBinding" type="tns:LoginEndpoint">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+ <operation name="webLogin">
+ <soap:operation soapAction="webLogin"/>
+ <input name="LoginEndpoint_webLogin">
+ <soap:body use="literal"/>
+
+ </input>
+ <output name="LoginEndpoint_webLoginResponse">
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+
+ <service name="LoginService">
+ <port name="LoginEndpointPort" binding="tns:LoginEndpointBinding">
+ <soap:address location="http://localhost:8080/axis2/services/LoginEndpoint"/></port></service></definitions>
+
+</pre></div>
+ <p>Place the above file, named LoginEndpoint.wsdl, in the directory 'wsdl'
+below the build.xml file. Run the WSDL2Java command via the ant task defined
+above, and there will be a directory called 'output' created. This directory
+contains the WSDL2Java generated source. An important detail is that an
+XMLBean class file is also generated by WSDL2Java, TypeSystemHolder.class.
+That file is placed into build/classes by the above ant task and will be
+needed to compile the generated sources.</p><p>The next step is to modify the generated Skeleton Java Source file - the
+Web Service. This file as generated returns null and needs to be updated to
+contain the business logic.</p><p>After the WSDL2Java command runs the file LoginEndpoint.wsdl, edit the
+following file:</p><p>output/org/example/types/LoginEndpointSkeleton.java. You should see the
+following code:</p>
+ <div class="source"><pre>package org.example.types;
+ /**
+ * Auto generated java skeleton for the service by the Axis code generator
+ */
+ public class LoginEndpointSkeleton {
+
+
+ /**
+ * Auto generated method signature
+
+ * @param param0
+
+ */
+ public org.example.types.databinding.login.ReturnWebLoginElementDocument webLogin
+ (org.example.types.databinding.login.WebLoginElementDocument param0 ){
+ //Todo fill this with the necessary business logic
+ return null;
+ }
+
+ }
+
+</pre></div>
+ <p>Replace the contents of this file with the following, which uses the
+complex types generated by WSDL2Java and the example wsdl file:</p>
+ <div class="source"><pre>package org.example.types;
+import org.example.types.databinding.login.ReturnWebLoginElementDocument;
+import org.example.types.databinding.login.WebLoginElementDocument.WebLoginElement;
+
+/**
+ * Auto generated java skeleton for the service by the Axis code generator
+ */
+public class LoginEndpointSkeleton {
+
+ /**
+ * Auto generated method signature
+
+ * @param webLoginElementDocument changed from param0
+
+ */
+ public org.example.types.databinding.login.ReturnWebLoginElementDocument webLogin
+ (org.example.types.databinding.login.WebLoginElementDocument webLoginElementDocument ){
+
+ //Todo fill this with the necessary business logic
+ System.out.println("LoginEndpointSkeleton.webLogin reached successfully!");
+
+ // Get parameters passed in
+ WebLoginElement webLoginElement = webLoginElementDocument.getWebLoginElement();
+ String userName = webLoginElement.getUserNameElement();
+ String password = webLoginElement.getUserPasswordElement();
+ System.out.println("LoginEndpointSkeleton.webLogin userName: " + userName);
+ System.out.println("LoginEndpointSkeleton.webLogin password: " + password);
+
+ // input paramaters would be used here
+
+ // prepare output
+ org.example.types.databinding.login.ReturnWebLoginElementDocument retDoc =
+ org.example.types.databinding.login.ReturnWebLoginElementDocument.Factory.newInstance();
+
+ org.example.types.databinding.login.ReturnWebLoginElementDocument.ReturnWebLoginElement
+ retElement =
+ org.example.types.databinding.login.ReturnWebLoginElementDocument.ReturnWebLoginElement.Factory.newInstance();
+
+ retElement.setWebUserNameElement("joe sixpack");
+ retElement.setSoapSessionIdElement("some_random_string");
+ System.out.println("validate retElement: " + retElement.validate());
+
+ retDoc.setReturnWebLoginElement(retElement);
+ System.out.println("validate retDoc: " + retDoc.validate());
+
+ System.out.println("LoginEndpointSkeleton.webLogin returning...");
+
+ return retDoc;
+
+
+ }
+
+}
+
+</pre></div>
+ <p>The next steps assume the axis2.war has been deployed and has expanded in
+a servlet container.</p><p>Run the 'jar_wsdl' ant task from the example build.xml, which generates a
+jar file lib/axis2_example_wsdl.jar in the 'lib' directory under the
+build.xml . This jar will be used to compile the client, and also will be
+placed in the servlet container. Next, run the 'aar' ant task from the
+example build.xml, which generates the deployable axis2 web service. Place
+dist/LoginEndpoint.aar into axis2/WEB-INF/services . Place
+lib/axis2_example_wsdl.jar into axis2/WEB-INF/lib . Verify the happy axis
+page loaded the services correctly - there should be the service
+'LoginEndpoint' with the available operation 'webLogin' displayed.</p><p>The last step is to create and run the client. In the src directory create
+the file org.client.LoginClient.java, with the contents below:</p>
+ <div class="source"><pre>package org.client;
+
+import org.apache.axis2.AxisFault;
+
+import org.example.types.LoginEndpointStub;
+import org.example.types.databinding.login.WebLoginElementDocument;
+import org.example.types.databinding.login.WebLoginElementDocument.WebLoginElement;
+import org.example.types.databinding.login.ReturnWebLoginElementDocument;
+import org.example.types.databinding.login.WebLoginElementDocument;
+import org.example.types.databinding.login.WebLoginElementDocument.WebLoginElement;
+
+/**
+ * Login.
+ *
+ */
+public class LoginClient {
+
+ public static void main(String[] args) {
+ try {
+
+ System.out.println("webLogin, firing...");
+ LoginEndpointStub stub =
+ new LoginEndpointStub(null,
+ "http://localhost:8080/axis2/services/LoginEndpoint");
+
+ WebLoginElementDocument webLoginElementDocument
+ = WebLoginElementDocument.Factory.newInstance();
+ WebLoginElement webLoginElement =
+ WebLoginElement.Factory.newInstance();
+ webLoginElement.setUserNameElement("joe");
+ webLoginElement.setUserPasswordElement("sixpack");
+
+ webLoginElementDocument.setWebLoginElement(webLoginElement);
+
+ System.out.println("validate: " + webLoginElement.validate());
+ stub.webLogin(webLoginElementDocument);
+
+ ReturnWebLoginElementDocument returnWebLoginElementDocument =
+ stub.webLogin(webLoginElementDocument);
+
+ System.out.println("Client returned");
+
+ org.example.types.databinding.login.ReturnWebLoginElementDocument.ReturnWebLoginElement
+ retElement = returnWebLoginElementDocument.getReturnWebLoginElement();
+
+ System.out.println("WebUserName: " + retElement.getWebUserNameElement());
+ System.out.println("SOAPSessionId: " + retElement.getSoapSessionIdElement());
+ System.out.println("webLogin, completed!!!");
+
+ } catch (AxisFault axisFault) {
+ axisFault.printStackTrace();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+}
+
+
+</pre></div>
+ <p>Now run the ant task 'ant runLogin' . The following output should
+appear:</p>
+ <div class="source"><pre>runLogin:
+ [echo] running the webLogin client
+ [java] webLogin, firing...
+ [java] validate: true
+ [java] Client returned
+ [java] WebUserName: joe sixpack
+ [java] SOAPSessionId: some_random_string
+ [java] webLogin, completed!!!
+
+</pre></div>
+ <p></p></div><div class="section"><a name="Appendix"></a><h2>Appendix</h2><ul>
+ <li>Eclipse reference - <a href="http://www.eclipse.org/" class="externalLink" title="External Link">
+ http://www.eclipse.org/</a></li>
+ <li>Custom Ant Tasks - <a href="http://ant.apache.org/manual/develop.html" class="externalLink" title="External Link">
+ http://ant.apache.org/manual/develop.html</a></li>
+</ul><p> </p><p> </p><p> </p><p> </p><p> </p></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 2004-2006, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file
Added: webservices/site/trunk/targets/axis2/0_94/CodegenToolReference.pdf
URL: http://svn.apache.org/viewcvs/webservices/site/trunk/targets/axis2/0_94/CodegenToolReference.pdf?rev=366133&view=auto
==============================================================================
Binary file - no diff available.
Propchange: webservices/site/trunk/targets/axis2/0_94/CodegenToolReference.pdf
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: webservices/site/trunk/targets/axis2/0_94/CodegenTools-EclipsePlugin.html
URL: http://svn.apache.org/viewcvs/webservices/site/trunk/targets/axis2/0_94/CodegenTools-EclipsePlugin.html?rev=366133&view=auto
==============================================================================
--- webservices/site/trunk/targets/axis2/0_94/CodegenTools-EclipsePlugin.html (added)
+++ webservices/site/trunk/targets/axis2/0_94/CodegenTools-EclipsePlugin.html Thu Jan 5 01:17:47 2006
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - Codegen Eclipse Wizard - Eclipse Plugin</title><style type="text/css" media="all">
+ @import url("./style/maven-base.css");
+
+ @import url("./style/maven-theme.css");</style><link rel="stylesheet" href="./style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/" id="projectLogo"><img alt="Apache Axis 2.0" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
+ Last published: 05 January 2006
+ | Doc for 0.94</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis_2_0"><h5>Axis 2.0</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="">Download Axis2</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="">Documentation</a><ul><li class="none"><a href="0_93/index.html">Version 0.93</a></li><li class="none"><a href="0_94/index.html">Version 0.94</a></li></ul></li><li class="expanded"><a href="overview.html">Get Involved</a><ul><li class="none"><a href="svn.html">Checkout the Source</a></li><li class="none"><a href="siteHowTo.html">Build the Site</a></li><li class="none"><a href="guidelines.html">Developer Guidelines</a></li><li cl
ass="none"><a href="refLib.html">Reference Library</a></li><li class="none"><a href="mail-lists.html">Mailing Lists</a></li><li class="none"><a href="faq.html">FAQ</a></li></ul></li><li class="none"><a href="thanks.html">Ackknowledgements</a></li><li class="expanded"><a href="">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Code_Generator_Wizard_-_Eclipse_Plug-in"></a><h2>Code Generator Wizard - Eclipse Plug-in</h2><div class="subsection"><a name="Introduction"></a><h3>Introduction</h3><p>The Axis2 code generator comes built-in with an <a href="http://www.eclipse.org" class="externalLink" title="External Link">E
clipse</a> plug-in. This document explains the
+installation and usage of the Axis2 code generator plug-in.</p></div><div class="subsection"><a name="Installation"></a><h3>Installation</h3><p>The easiest way to obtain the plug-in would be the binary distribution.
+The full Axis binary distribution contains the compiled version of this
+plug-in under the tools directory.</p><p>If one needs to build the plugin from source it is not as trivial as
+running the Maven build. The reason is that the plug-in depends heavily on
+the Eclipse classes, which are only available in an Eclipse environment. The
+recommended procedure is to run the create-project.xml (in the "modules\tool"
+directory of the source distribution) build file which will create two
+folders (the other one for the Service Archiver tool) and copy the necessary
+files to relevant folders. Then Eclipse should be configured to open the
+contents in a PDE project. Please go through the Eclipse documentation to
+learn how to open projects in the PDE format.</p><p>Once you've obtained the plug-in just unzip the content of the plug-in
+archive to the eclipse plug-in directory (if it is the zipped-binary version)
+or copy the necessary folders to the eclipse plug-in directory and restart
+Eclipse.</p><p><i>Note - This plug-in works on Eclipse version 3.0 and upwards</i></p></div><div class="subsection"><a name="Operation"></a><h3>Operation</h3><p>If the plug-in is properly installed you should see a new wizard under the
+"New" section.(use the File -> New -> Other or Ctrl + N )</p><p><img src="images/tools/wsdl/wizardSelectionPage.jpg" width="500" height="500" alt=""></img></p><p>Selecting the wizard and pressing the next button will start the code
+generator wizard. Following is the first wizard page.</p><p><img src="images/tools/wsdl/toolSelectionpage.jpg" width="557" height="501" alt=""></img></p><p>Selecting the generate code from WSDL option leads to the next page. Note
+that the Java-to-WSDL tool is disabled.</p><p><img src="images/tools/wsdl/WSDLSelectionPage.jpg" width="518" height="500" alt=""></img></p><p>To move on to the next page the WSDL file location must be given. The
+browse button can be used to easily browse for a file rather than typing the
+whole path.</p><p>Once the WSDL file is selected, codegen options are to be selected. By far
+this is the most important page in this wizard, which determines the
+characteristics of the code being generated. Novices need not worry about
+these options since the most common options are defaulted, But advanced users
+will find it very easy to "turn the knobs" using these options.</p><p><img border="0" src="images/tools/wsdl/OptionsPage.jpg" width="518" height="500" alt=""></img></p><p>Once the options are taken care of, only the final step of the code
+generation is left. it is the selection of the output file location.</p><p><img border="0" src="images/tools/wsdl/OutputPage.jpg" width="518" height="500" alt=""></img></p><p>When the output file location is selected, the Finish button will be
+enabled. Pressing the finish button will generate the code and a message box
+will pop up acknowledging the success. Well Done! Now you are ready for Axis2
+Code generation.</p></div></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 2004-2006, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file
Added: webservices/site/trunk/targets/axis2/0_94/OMTutorial.html
URL: http://svn.apache.org/viewcvs/webservices/site/trunk/targets/axis2/0_94/OMTutorial.html?rev=366133&view=auto
==============================================================================
--- webservices/site/trunk/targets/axis2/0_94/OMTutorial.html (added)
+++ webservices/site/trunk/targets/axis2/0_94/OMTutorial.html Thu Jan 5 01:17:47 2006
@@ -0,0 +1,501 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - OM Tutorial</title><style type="text/css" media="all">
+ @import url("./style/maven-base.css");
+
+ @import url("./style/maven-theme.css");</style><link rel="stylesheet" href="./style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/" id="projectLogo"><img alt="Apache Axis 2.0" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
+ Last published: 05 January 2006
+ | Doc for 0.94</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis_2_0"><h5>Axis 2.0</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="">Download Axis2</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="">Documentation</a><ul><li class="none"><a href="0_93/index.html">Version 0.93</a></li><li class="none"><a href="0_94/index.html">Version 0.94</a></li></ul></li><li class="expanded"><a href="overview.html">Get Involved</a><ul><li class="none"><a href="svn.html">Checkout the Source</a></li><li class="none"><a href="siteHowTo.html">Build the Site</a></li><li class="none"><a href="guidelines.html">Developer Guidelines</a></li><li cl
ass="none"><a href="refLib.html">Reference Library</a></li><li class="none"><a href="mail-lists.html">Mailing Lists</a></li><li class="none"><a href="faq.html">FAQ</a></li></ul></li><li class="none"><a href="thanks.html">Ackknowledgements</a></li><li class="expanded"><a href="">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><p>
+
+</p></div><div class="section"><a name="OM_Tutorial"></a><h2>OM Tutorial</h2><div class="subsection"><a name="Introduction"></a><h3>Introduction</h3></div><div class="subsection"><a name="What_is_OM_"></a><h3>What is OM?</h3><p>OM stands for Object Model (also known as AXIOM - AXis Object Model) and
+refers to the XML infoset model that is developed for Axis 2. XML infoset
+refers to the information included inside the XML and for programmatical
+manipulation it is convenient to have a representation of this XML infoset in
+a language specific manner. For an object oriented language the obvious
+choice is a model made up of objects. DOM and JDOM are two such XML models.
+OM is conceptually similar to such an XML model by its external behavior but
+deep down it is very much different. The objective of this tutorial is to
+introduce the basics of OM and explain the best practices to follow while
+using OM. However before entering the deep end of OM it is better to skim the
+surface and see what it is all about!</p></div><div class="subsection"><a name="For_whom_is_this_Tutorial_"></a><h3>For whom is this Tutorial?</h3><p>This tutorial can be used by anybody who is interested in OM and need to
+go deeper in it. However it is assumed that the reader has a basic
+understanding of the concepts of XML (such as Namespaces) and a working
+knowledge of tools such as Ant. Knowledge in similar object models such as
+DOM will be quite helpful in understanding OM but such knowledge is not
+assumed. Several Links are listed in the appendix/ links section that will
+help understand the basics of XML.</p></div><div class="subsection"><a name="What_is_Pull_Parsing__"></a><h3>What is Pull Parsing ?</h3><p>
+Pull parsing is a recent trend in XML processing. The previously popular XML
+processing frameworks such as SAX and DOM were "push-based" which means the
+control of the parsing was with the parser itself. This approach is fine and
+easy to use but it was not efficient in handling large XML documents since a
+complete memory model will be generated in the memory. Pull parsing inverts
+the control and hence the parser only proceeds at the users command. The user
+can decide to store or discard events generated from the parser. OM is based
+on pull parsing. To learn more about XML pull parsing see the <a href="http://www.bearcave.com/software/java/xml/xmlpull.html" class="externalLink" title="External Link">XML pull
+parsing introduction</a>.
+
+</p></div><div class="subsection"><a name="A_Bit_of_History"></a><h3>A Bit of History</h3><p>The original OM was proposed as a store for the pull parser events for
+later processing, at the Axis summit held in Colombo, Sri Lanka, in September
+2004. However this approach was soon improved and OM was pursued as a
+complete info set model due to its flexibility. Several implementation
+techniques were attempted during the initial phases. The two most promising
+techniques were the table based technique and the link list based technique.
+During the intermediate performance tests the link list based technique
+proved to be much more memory efficient for smaller and mid sized XML
+documents (the advantage of the table based OM was only visible for the large
+and very large XML documents) and hence the link list based technique was
+chosen as the most suitable. Initial efforts were focused on implementing the
+XML info set items which are relevant to the SOAP specification (DTD support,
+Processing Instruction support, etc were not considered). The advantage of
+having a tight integration was evident at this stage and this resulted in
+having SOAP specific interfaces as part of OM rather than a layer on top of
+it. OM was deliberately made API centric. It allows the implementations to
+take place independently and swapped without affecting the program later.</p></div><div class="subsection"><a name="Features_of_OM"></a><h3>Features of OM</h3><p>OM is a lightweight, differed built XML info set representation based on
+StAX (<a href="http://www.jcp.org/aboutJava/communityprocess/first/jsr173/" class="externalLink" title="External Link">JSR
+173</a>), which is the standard streaming pull parser API. The object model
+can be manipulated as flexibly as any other object model (Such as <a href="http://www.jdom.org/" class="externalLink" title="External Link">JDOM</a>), but underneath the objects will be
+created only when they are absolutely required. This leads to much less
+memory intensive programming. Following is a short feature overview of OM.</p><ul>
+ <li>Lightweigt: OM is specifically targeted to be lightweight. This is
+ achieved by reducing the depth of the hierarchy, number of methods and
+ the attributes enclosed in the objects. This makes the objects less
+ memory intensive.</li>
+ <li>Differed building: By far this is the most important feature of OM. The
+ objects are not made unless a need arises for them. This passes the
+ control of building over to the object model itself rather than an
+ external builder.</li>
+ <li>Pull based: For a differed building mechanism a pull based parser is
+ required. OM is based on StAX, the standard pull parser API.</li>
+</ul><p>
+
+</p><p class="special"></p><table class="bodyTable"><tbody>
+ <tr class="b"><td><img src="images/OM005.gif" alt="Rememeber this" width="35" height="57"></img></td><td class="special-td">OM is tightly bound to StAX API. To work with OM
+ a StAX compliant parser and the API <i>must</i> be present in the
+ classpath.</td><td></td></tr>
+ </tbody></table><p>
+
+</p><p>The Following image shows how OM API is viewed by the user</p><p>
+
+</p><p align="center" class="img"><img src="images/archi006.jpg" alt="OM Structure" class="img" width="490" height="282"></img></p><p align="center" class="img-title">Figure 1</p><p>
+
+</p><p>OM Builder wraps the raw xml character stream through the StAX reader API.
+Hence the complexities of the pull event stream is covered</p></div><div class="subsection"><a name="A_Bit_About_Caching"></a><h3>A Bit About Caching</h3><p>Since OM is a differed built Object model, It incorporates the concept of
+caching. Caching refers to the creation of the objects while parsing the pull
+stream. The reason why this is so important is because caching can be turned
+off in certain situations. if so the parser proceeds without building the
+object structure. User can extract the raw pull stream from OM and use that
+instead of the OM and in this case it is sometimes beneficial to switch off
+caching. The advanced operations section explains more on accessing the raw
+pull stream and switching the caching on and off.</p></div><div class="subsection"><a name="Where_Does_SOAP_Come_into_Play_"></a><h3>Where Does SOAP Come into Play?</h3><p>In a nutshell SOAP is a information exchange protocol based on XML. SOAP
+has a defined set of XML elements that should be used in messages. Since Axis
+is a "SOAP Engine" and OM is built for Axis, A set of SOAP specific objects
+were also defined along with OM. These SOAP Objects are extensions of the
+general OM objects. See <a href="http://www.w3schools.com/SOAP/soap_intro.asp" class="externalLink" title="External Link"> here </a> to learn more
+about SOAP.</p><p>
+
+</p></div><div class="subsection"><a name="Working_with_OM"></a><h3>Working with OM</h3></div><div class="subsection"><a name="Obtaining_the_OM_binary"></a><h3>Obtaining the OM binary</h3><p>OM is not a separate product but part of Axis2. However since Axis2 has a
+modular build structure, it is possible to obtain an "OM only" jar.</p><p>The easiest way to obtain the OM binary is to download the Axis2 binary
+distribution. <em><font> </font></em><font color="red" style="color: #000000">The lib directory will contain the <span style="color: #FF0000">axis2-xml-0.94.jar</span></font><span style="color: #000000">. However more adventurous users can build the OM from
+source, which is described in the next section.</span></p><p>Detailed information on getting source from Axis2 SVN repository can be
+found <a href="svn.html" class="newWindow" title="New Window" target="_blank">here</a>.</p><p>After the source download, OM-binary can be built. For both Windows and
+Linux move it to the project directory and execute the command "maven jar".
+All other necessary jars will be automatically downloaded. <em> </em><font color="red"><span style="color: #000000">When the build finishes
+successfully, the <span style="color: #FF0000">axis2-xml-0.94.jar</span> can
+be found in the newly created "targets" directory in the XML
+module.</span></font></p><p>Once the OM-binary is obtained by any of the above ways , it should be
+included in the class path for any of the OM based programs to work.
+Subsequent sections of this tutorial assume that this build step is complete
+and the <font color="red">Axis-0.94.jar </font> is correct in the classpath
+along with the StAX API jar file and a StAX implementation.</p></div><div class="subsection"><a name="Creation"></a><h3>Creation</h3><p>Creation is the first and foremost action when using an Object
+representation. This part explains how OM can be built from an existing
+document or just programmatically. OM provides a notion of a factory and a
+builder to create objects. The factory helps to keep the code at the
+interface level and the implementations separately (Figure 2). Since OM is
+tightly bound to StAX, a StAX compliant reader should be created first with
+the desired input stream. Then the reader should be fed into the
+OMXMLBuilderFactory to instantiate a suitable builder. The interface provided
+by the builder is identical, though the internal implementations vary.
+However, the types of the returned objects depend on the implementation of
+the builder. For example the SOAPModelBuilder returns SOAP specific objects
+(such as the SOAPEnvelope, which are sub classes of the OMElement) through
+its builder methods. The following piece of code shows the correct method of
+creating an OM document from an input stream. Note that the SOAP builder is
+used in this example.</p><div align="left">
+<p><b>Code Listing 1</b></p>
+</div>
+ <div class="source"><pre><pre>//create the parser<br></br>
+XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new FileReader(file));
+<br></br>//create the builder<br></br>
+OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXSOAPModelBuilder(OMAbstractFactory.getSOAP11Factory(), parser);
+//get the root element (in this case the envelope)<br></br>
+ SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();</pre>
+</pre></div>
+ <p>As the example shows, creating an OM from an input stream is pretty
+straightforward. However elements and nodes can be created programmatically
+to modify the structure as well. The recommended way to create OM objects
+programmatically is to use the factory. OMAbstractFactory.getOMFactory() will
+return the proper factory and the creator methods for each type should be
+called. Currently OM has two builders, namely the OM builder and the SOAP
+model builder. These builders provide the necessary information to the XML
+info set model to build itself.</p><p>
+
+</p><p class="img"><img src="images/archi007.jpg" alt="OM Structure 2" class="img" width="420" height="246"></img></p><p class="img-title">Figure 2</p><p>
+
+</p><p>A simple example is shown below.</p><div align="left">
+<p><b>Code Listing 2</b></p>
+</div>
+ <div class="source"><pre>//create a factory
+OMFactory factory = OMAbstractFactory.getOMFactory();
+//use the factory to create two namespace objects
+OMNamespace ns1 = factory.createOMNamespace("bar","x");
+OMNamespace ns2 = factory.createOMNamespace("bar1","y");
+//use the factory to create three elements
+OMElement root = factory.createOMElement("root",ns1);
+OMElement elt11 = factory.createOMElement("foo1",ns1);
+OMElement elt12 = factory.createOMElement("foo2",ns1);
+
+</pre></div>
+ <p>The reason to have a set of factory.createXXX methods is to cater for
+different implementations but keep the programmers code intact. Its highly
+recommend to use the factory for creating OM objects as this will ease the
+switching of different OM implementations. Several differences exist between
+a programmatically created OMNode and a conventionally built OMNode. The most
+important difference is that the former will have no builder object enclosed,
+where as the latter always carries a reference to its builder. As stated
+earlier in this tutorial, since the object model is built as and when
+required, each and every OMNode should have a reference to its builder. If
+this information is not available, it is due to the Object being created
+without a builder. This difference becomes evident when the user tries to get
+a non caching pull parser from the OMElement. This will be discussed in more
+detail in the advanced operations section.</p><p>In order to understand the requirement of the builder reference in each
+and every OMNode, consider the following scenario. Assume that the parent
+element is built but the children elements are not. If the parent is asked to
+iterate through its children, this information is not readily available to
+the parent element and it should build its children first before attempting
+to iterate them. In order to provide a reference of the builder, each and
+every node of an OM structure should carry the reference to its builder. Each
+and every OMNode carries a flag that states its build status. Apart from this
+restriction there are no other constraints that keep the programmer away from
+mixing up programmatically made OMNode objects with OMNode objects built from
+builders.</p><p>The SOAP Object hierarchy is made in the most natural way for a
+programmer. An inspection of the API will show that it is quite close to the
+SAAJ API but with no bindings to DOM or any other model. The SOAP classes
+extend basic OM classes (such as the element) hence one can access a SOAP
+document either with the abstraction of SOAP or drill down to the underlying
+XML Object model with a simple casting.</p><p>
+
+</p></div><div class="subsection"><a name="Addition_of_Nodes"></a><h3>Addition of Nodes</h3><p>Addition and removal methods are primarily defined in the OMElement
+interface. The following are the most important in adding nodes.</p><div align="left">
+<p><b>Code Listing 3</b></p>
+</div>
+ <div class="source"><pre>public void addChild(OMNode omNode);
+public void addAttribute(OMAttribute attr);
+
+</pre></div>
+ <p>This code segment shows how the addition takes place. Note that it is
+related to the code segment shown in the creation section.</p><div align="left">
+<p><b>Code Listing 4</b></p>
+</div>
+ <div class="source"><pre>//set the children
+elt11.addChild(elt21);
+elt12.addChild(elt22);
+root.addChild(elt11);
+root.addChild(elt12);
+</pre></div>
+ <ul>
+ <li>AddChild method will always add the child as the first child of the
+ parent.</li>
+ <li><p>A given node can be removed from the tree by calling the detach()
+ method. A node can also be removed from the tree by calling the remove
+ method of the returned iterator which will also call the detach method of
+ the particular node internally.</p>
+ </li>
+ <li>Namespaces are a tricky part of any XML object model and is the same in
+ OM. However the interface to the namespace have been made very simple.
+ OMNamespace is the class that represents a namespace with intentionally
+ removed setter methods. This makes the OMNamespace immutable and allows
+ the underlying implementation to share the objects without any
+ difficulty.</li>
+</ul><p>Following are the important methods available in OMElement to handle
+namespaces.</p><div align="left">
+<b></b><p><b>Code Listing 5</b></p></div>
+ <div class="source"><pre>public OMNamespace declareNamespace(String uri, String prefix);
+public OMNamespace declareNamespace(OMNamespace namespace);
+public OMNamespace findNamespace(String uri, String prefix) throws OMException;
+
+</pre></div>
+ <p>The declareNamespaceXX methods are fairly straightforward. They add a
+namespace to namespace declarations section. Note that a namespace
+declaration that has already being added will not be added twice.
+FindNamespace is a very handy method to locate a namespace object higher up
+the object tree. It searches for a matching namespace in its own declarations
+section and jumps to the parent if it's not found. The search progresses up
+the tree until a matching namespace is found or the root has been reached.</p><p>During the serialization a directly created namespace from the factory
+will only be added to the declarations when that prefix is encountered by the
+serializer. More of the serialization matters will be discussed in the
+serializer section.</p><p>The following simple code segment shows how the namespaces are dealt with
+in OM</p><div align="left">
+<p><b>Code Listing 6</b></p>
+</div>
+ <div class="source"><pre>OMFactory factory = OMAbstractFactory.getOMFactory();
+OMNamespace ns1 = factory.createOMNamespace("bar","x");
+OMElement root = factory.createOMElement("root",ns1);
+OMNamespace ns2 = root.declareNamespace("bar1","y");
+OMElement elt1 = factory.createOMElement("foo",ns1);
+OMElement elt2 = factory.createOMElement("yuck",ns2);
+OMText txt1 = factory.createText(elt2,"blah");
+elt2.addChild(txt1);
+elt1.addChild(elt2);
+root.addChild(elt1);
+
+</pre></div>
+ <p>Serilization of the root element produces the following XML</p>
+ <div class="source"><pre><x:root xmlns:x="bar" xmlns:y="bar1">
+ <x:foo>
+ <y:yuck>blah</y:yuck>
+ </x:foo>
+</x:root>
+
+</pre></div>
+ </div><div class="subsection"><a name="Traversing"></a><h3>Traversing</h3><p>Traversing the object structure can be done in the usual way by using the
+list of children. Note however that the child nodes are returned as an
+iterator. The Iterator supports the 'OM way' of accessing elements and is
+more convenient than a list for sequential access. The following code sample
+shows how the children can be accessed. The children are of the type OMNode
+that can either be OMText or OMElement.</p><div align="left">
+<b></b><p><b>Code Listing 7</b></p></div>
+ <div class="source"><pre>Iterator children = root.getChildren();
+While(children.hasNext()){
+ OMNode node = (OMNode)children.next();
+}
+
+</pre></div>
+ <p>Apart from this, every OMNode has links to its siblings. If more thorough
+navigation is needed the nextSibling() and PreviousSibling() methods can be
+used. A more selective set can be chosen by using the
+getChildrenWithName(QName) methods. The getChildWithName(Qname) method
+returns the first child that matches the given QName and
+getChildrenWithName(QName) returns a collection containing all the matching
+children. The advantage of these iterators is that they won't build the whole
+object structure at once, until its required.</p><p>
+
+</p><p class="special"></p><table class="bodyTable"><tbody>
+ <tr class="a"><td><img src="images/OM005.gif" alt="Rememeber this" width="35" height="57"></img></td><td class="special-td">All iterator implementations internally stay one
+ step ahead of their apparent location to provide the correct value
+ for the hasNext() method. This hidden advancement can build elements
+ that are not intended to be built at all. Hence these iterators are
+ recommended only when caching is not a concern.</td><td></td></tr>
+ </tbody></table><p>
+
+</p><p>OM can be serialized either as the pure object model or the pull event
+stream. The serialization uses a XMLStreamWriter object to write out the
+output and hence the same serialization mechanism can be used to write
+different types of outputs (such as text, binary, etc.,).</p><p>A caching flag is provided by OM to control the building of the in-memory
+OM. The OMNode has two methods, serializeWithCache and serialize When
+serialize is called the cache flag is reset and the serializer does not cache
+the stream. Hence the object model will not be built if the cache flag is not
+set.</p><p>The serializer serializes namespaces in the following way.</p><ol>
+ <li>When a namespace that is in the scope but not yet declared is
+ encountered, it will then be declared.</li>
+ <li>When a namespace that is in scope and already declared is encountered,
+ the existing declarations prefix is used.</li>
+ <li>When the namespaces are declared explicitly using the elements
+ declareNamespace() method, they will be serialized even if those
+ namespaces are not used in that scope.</li>
+</ol><p>Because of this behavior, if a fragment of the XML is serialized, it will
+also be <i>namespace qualified</i> with the necessary namespace
+declarations.</p><p>Here is an example that shows how to write the output to the console, with
+reference to the earlier code sample (Code listing 1 ) that created a SOAP
+envelope.</p><div align="left">
+<b></b><p><b>Code Listing 8</b></p></div>
+ <div class="source"><pre>XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out);
+//dump the output to console with caching
+envelope.serializeWithCache(writer);
+writer.flush();
+
+
+</pre></div>
+ <p>The above mentioned features of the serializer forces a correct
+serialization even if only a part of the OM tree is serialized. The following
+serializations show how the serialization mechanism takes the trouble to
+accurately figure out the namespaces. The example is from Code Listing 6
+which creates a small OM programmatically. Serialization of the root element
+produces the following,</p>
+ <div class="source"><pre><x:root xmlns:x="bar" xmlns:y="bar1">
+ <x:foo>
+ <y:yuck>blah</y:yuck>
+ </x:foo>
+</x:root>
+
+</pre></div>
+ <p>However serialization of only the foo element produces the following</p>
+ <div class="source"><pre><x:foo xmlns:x="bar">
+<y:yuck xmlns:y="bar1">blah</y:yuck>
+</x:foo>
+
+</pre></div>
+ <p>Note how the serializer puts the relevant namespace declarations in
+place.</p><b>Complete code for the OM based document building and serialization </b><p>The following code segment shows how to use the OM for completely building
+a document and then serializing it into text pushing the output to the
+console. Only the important sections are shown here. The complete program
+listing can be found in the appendix.</p><div align="left">
+<p><b>Code Listing 9</b></p>
+</div>
+ <div class="source"><pre>//create the parser
+XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new FileReader(file));
+//create the builder
+OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXSOAPModelBuilder(OMAbstractFactory.getOMFactory(),parser);
+//get the root element (in this case the envelope)
+SOAPEnvelope envelope = (SOAPEnvelope)builder.getDocumentElement();
+//get the writer
+XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out);
+//dump the out put to console with caching
+envelope.serialize(writer);
+writer.flush();
+
+</pre></div>
+ </div><div class="subsection"><a name="Advanced_Operations_with_OM"></a><h3>Advanced Operations with OM</h3></div><div class="subsection"><a name="Use_of_the_OMNavigator_for_Traversal"></a><h3>Use of the OMNavigator for Traversal</h3><p>OM provides a utility class to navigate the OM structure. The navigator
+provides an in-order traversal of the OM tree up to the last-built node. The
+Navigator has two states called the navigable state and the completion state.
+Since the navigator provides the navigation starting from an OMElement, it is
+deemed to have completed the navigation when the starting node is reached
+again. This state is known as the completion state. Once the navigator has
+reached the complete status its navigation is done and it cannot proceed.</p><p>It is possible that the OM tree does not get built completely when it is
+navigated. The navigable status shows whether the tree structure is
+navigable. When the navigator is complete it is not navigable anymore.
+However it is possible for a navigator to become non-navigable without being
+complete. The following code sample shows how the navigator should be used
+and handled using its states.</p><div align="left">
+<b></b><p><b>Code Listing 10</b></p></div>
+ <div class="source"><pre>//Create a navigator
+OMNavigator navigator = new OMNavigator(envelope);
+OMNode node = null;
+while (navigator.isNavigable()) {
+ node = navigator.next();
+}
+
+</pre></div>
+ </div><div class="subsection"><a name="Accessing_the_Pull_Parser"></a><h3>Accessing the Pull Parser</h3><p>OM is tightly integrated with StAX and the
+getXMLStreamReader()/getXMLStreamReaderWithoutCaching() methods in the
+OMElement provides a XMLStreamReader object. This XMLStreamReader instance
+has a special capability of switching between the underlying stream and the
+OM object tree if the cache setting is off. However this functionality is
+completely transparent to the user. This is further explained in the
+following paragraphs.</p><p>OM has the concept of caching, and OM is the actual cache of the events
+fired. However the requester can choose to get the pull events from the
+underlying stream rather than the OM tree. This can be achieved by getting
+the pull parser with the cache off. If the pull parser was obtained without
+switching off cache, the new events fired will be cached and the tree
+updated. This returned pull parser will switch between the object structure
+and the stream underneath and the users need not worry about the differences
+caused by the switching. The exact pull stream the original document would
+have provided would be produced even if the OM tree was fully/partially
+built. The getXMLStreamReaderWithoutCaching() method is very useful when the
+events need to be handled in a pull based manner without any intermediate
+models. This makes such operations faster and efficient.</p><p>
+
+</p><p class="special"></p><table class="bodyTable"><tbody>
+ <tr class="b"><td><img src="images/OM005.gif" alt="Rememeber this" width="35" height="57"></img></td><td class="special-td">For consistency reasons once the cache is
+ switched off it cannot be switched on again.</td><td></td></tr>
+ </tbody></table><p>
+
+</p></div><div class="subsection"><a name=" Known_Limitations_of_OM"></a><h3> Known Limitations of OM</h3></div><div class="subsection"><a name="Inefficient_Namespace_serialization"></a><h3>Inefficient Namespace serialization</h3><p>Although the serializer acts correctly in every situation, the code that
+it produces may not be efficient all the time. Take the following case where
+a similar Code Listing to Code Listing 6 is used, but with two elements
+having the same namespace. Note that the newly added items are in bold.</p><div align="left">
+<b></b><p><b>Code Listing 11</b></p></div>
+ <div class="source"><pre>OMFactory factory = OMAbstractFactory.getOMFactory();
+OMNamespace ns1 = factory.createOMNamespace("bar","x");
+OMElement root = factory.createOMElement("root",ns1);
+OMNamespace ns2 = root.declareNamespace("bar1","y");
+OMElement elt1 = factory.createOMElement("foo",ns1);
+OMElement elt2 = factory.createOMElement("yuck",ns2);
+
+OMText txt1 = factory.createText(elt2,"blah");
+
+elt2.addChild(txt1);
+elt1.addChild(elt2);
+
+root.addChild(elt1);
+
+</pre></div>
+ <p>Serialization of the root element provides the following XML</p>
+ <div class="source"><pre><x:root xmlns:x="bar" xmlns:y="bar1">
+<x:foo>
+ <y:yuck>blahblah</y:yuck>
+ <y:yuck>blah</y:yuck>
+ </x:foo>
+</x:root>
+
+
+
+</pre></div>
+ <p>However if the serialization is carried on the foo element then the
+following XML is produced</p>
+ <div class="source"><pre><x:foo xmlns:x="bar" >
+ <y:yuck " xmlns:y="bar1">blahblah</y:yuck>
+ <y:yuck " xmlns:y="bar1">blah</y:yuck>
+ </x:foo>
+
+
+
+</pre></div>
+ <p>Note that the same Namespace is serialized twice. This XML is semantically
+correct but the same semantics could have been achieved by placing the y
+namespace declaration on the parent element. This behavior is due to the
+nature of the serialization where it tries to be accurate but not optimal. It
+is deliberately kept unchanged since such optimizations slow down the common
+case.</p></div><div class="subsection"><a name="Summary"></a><h3>Summary</h3><p>This is meant to be a small yet comprehensive introduction to AXIOM. AXIOM
+however is a lot more than what is described in this tutorial. Readers are
+welcome to explore AXIOM, specially it's capabilities to handle binary
+content.</p></div><div class="subsection"><a name="Appendix"></a><h3>Appendix</h3></div><div class="subsection"><a name="Program_Listing_for_complete_OM_-_build_and_serialize"></a><h3>Program Listing for complete OM - build and serialize</h3>
+ <div class="source"><pre>import org.apache.axis2.om.SOAPEnvelope;
+import org.apache.axis2.om.OMFactory;
+import org.apache.axis2.om.OMXMLParserWrapper;
+import org.apache.axis2.impl.llom.factory.OMXMLBuilderFactory;
+
+import javax.xml.stream.*;
+import java.io.FileReader;
+import java.io.FileNotFoundException;
+
+public class TestOMBuilder {
+
+ /**
+ * Pass the file name as an argument
+ * @param args
+ */
+ public static void main(String[] args) {
+ try {
+ //create the parser
+ XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new FileReader(args[0]));
+ //create the builder
+ OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXSOAPModelBuilder(OMAbstractFactory.getOMFactory(), parser);
+ //get the root element (in this case the envelope)
+ SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
+ //get the writer
+ XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out);
+ //dump the out put to console with caching
+ envelope.serialize(writer);
+writer.flush();
+
+ } catch (XMLStreamException e) {
+ e.printStackTrace();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+}
+
+</pre></div>
+ </div><div class="subsection"><a name="Links"></a><h3>Links</h3><p>
+For basics in XML
+<ul>
+ <li><a href="http://www-128.ibm.com/developerworks/xml/newto/index.html" class="externalLink" title="External Link">Developerworks
+ Introduction to XML</a></li>
+ <li><a href="http://www.bearcave.com/software/java/xml/xmlpull.html" class="externalLink" title="External Link">Introduction
+ to Pull parsing</a></li>
+</ul>
+</p></div></div><div class="section"><table class="bodyTable"><tbody>
+ <tr class="a"><td align="center">All rights reserved by Apache Software
+ Foundation</td></tr>
+ </tbody></table></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 2004-2006, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file
Added: webservices/site/trunk/targets/axis2/0_94/ServiceArchiveToolReference.html
URL: http://svn.apache.org/viewcvs/webservices/site/trunk/targets/axis2/0_94/ServiceArchiveToolReference.html?rev=366133&view=auto
==============================================================================
--- webservices/site/trunk/targets/axis2/0_94/ServiceArchiveToolReference.html (added)
+++ webservices/site/trunk/targets/axis2/0_94/ServiceArchiveToolReference.html Thu Jan 5 01:17:47 2006
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - </title><style type="text/css" media="all">
+ @import url("./style/maven-base.css");
+
+ @import url("./style/maven-theme.css");</style><link rel="stylesheet" href="./style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/" id="projectLogo"><img alt="Apache Axis 2.0" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
+ Last published: 05 January 2006
+ | Doc for 0.94</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis_2_0"><h5>Axis 2.0</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="">Download Axis2</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="">Documentation</a><ul><li class="none"><a href="0_93/index.html">Version 0.93</a></li><li class="none"><a href="0_94/index.html">Version 0.94</a></li></ul></li><li class="expanded"><a href="overview.html">Get Involved</a><ul><li class="none"><a href="svn.html">Checkout the Source</a></li><li class="none"><a href="siteHowTo.html">Build the Site</a></li><li class="none"><a href="guidelines.html">Developer Guidelines</a></li><li cl
ass="none"><a href="refLib.html">Reference Library</a></li><li class="none"><a href="mail-lists.html">Mailing Lists</a></li><li class="none"><a href="faq.html">FAQ</a></li></ul></li><li class="none"><a href="thanks.html">Ackknowledgements</a></li><li class="expanded"><a href="">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Service_Archive_Wizard_-_Eclipse_Plug-in"></a><h2>Service Archive Wizard - Eclipse Plug-in</h2><p>Axis2 comes with a simple service archiver tool. This tool provides easy to use functionality to develop a axis archive or an "aar" file or a "jar" file that can be deployed as a web service to t
he Axis2. This tool is in the form of
+an Eclipse plug-in and can be downloaded from the downloads section. This document describes how the tool can be used.</p><div class="subsection"><a name="Installation"></a><h3>Installation</h3><p>
+Download the binary version of the plug-in and extract the content of the zip
+file into the Eclipse installation folder. (The plug-in will actually go into
+the plugins directory in the Eclipse installation root). Restarting Eclipse will set
+the plug-in automatically.
+</p></div><div class="subsection"><a name="Operation"></a><h3>Operation</h3><p>If the plug-in is properly installed you should see a new wizard under the
+"New" section.(use the File -> New -> Other or Ctrl + N ) </p><p align="center">
+<img border="0" src="images/tools/service/ServiceWizardSelection.jpg" width="500" height="500" alt=""></img></p><p>Selecting the wizard and pressing the next button will start the service
+generator wizard. Following is the first wizard page.</p><p align="center"><img border="0" src="images/tools/service/ServicePage1.jpg" width="500" height="500" alt=""></img></p><p>Once the class file folder is given (which should be a folder in the file
+system) the next button will be enabled. Page 2 of the wizard requires you to
+locate the wsdl file. Note that the WSDL file cannot be skipped in this version of the tool</p><p align="center">
+<img border="0" src="images/tools/service/service_page2.JPG" width="500" height="500" alt=""></img></p><p align="center">Select the service.XML file in the next wizard page</p><p align="center"><img border="0" src="images/tools/service/service_page3.JPG" width="500" height="500" alt=""></img></p><p>Note that The service XML file can be generated if needed. To proceed
+to the service generaion page, check the "generate automatically" checkbox. </p><p align="center"><img border="0" src="images/tools/service/service_page3_hl.JPG" alt=""></img></p><p>If the automatic mode is not selected then the wizard
+will directly jump to the library selection page. However if the automatic mode is selected the wizard will show the
+following page</p><p align="center"><img border="0" src="images/tools/service/service_page4_plain.JPG" width="500" height="500" alt=""></img></p><p>This is a somewhat complicated page. The service name textbox should include the name of the service that you
+wish to give this service.
+For the implementation class type in the fully qualified class name and hit the load button to view the operations</p><p align="center"><img border="0" src="images/tools/service/service_page4_load.JPG" alt=""></img></p><p> The loaded operations should be displayed in a table. Once this is displayed you can filter the methods by selecting/deselcting the methods using the checkbox at each row.</p><p align="center"><img border="0" src="images/tools/service/service_page4_table.JPG" width="500" height="500" alt=""></img></p><p>Further filtering can be achieved by using the "search declared methods" only checkbox</p><p align="center"><img border="0" src="images/tools/service/service_page4_search_declared.JPG" alt=""></img></p><p>Once the method selection is complete the wizard has enough information to generate a basic services.xml file. If further customization is required, there's no choice but to manually edit it!</p><p>The next step is to add the libraries. The library additio
n page looks like this </p><p align="center"><img border="0" src="images/tools/service/service_page5.JPG" alt=""></img></p><p>The library name (with full path) can be either typed on the text box or browsed for using the browse button. </p><p align="center"><img border="0" src="images/tools/service/service_page5_browsed.JPG" alt=""></img></p><p>Hit the Add button to add the library to the list. The added libraries should be displayed in the list box</p><p align="center"><img border="0" src="images/tools/service/service_page5_hl.JPG" alt=""></img></p><p align="center"><img border="0" src="images/tools/service/service_page5_added.JPG" alt=""></img></p><p>If any library needs to be removed, highlight it in the list and hit remove. Click next to proceed to the last page of the wizard</p><p align="center"><img border="0" src="images/tools/service/service_page5_remove.JPG" alt=""></img></p><p>The last page of the wizard asks for the output location and the output archive name.</p>
<p>
+</p><p align="center"><img border="0" src="images/tools/service/service_page6.JPG" alt=""></img></p><p>Once all the parameters are filled, hit the finish button to complete the wizard and generate the
+service archive.</p><p align="center"><img border="0" src="images/tools/service/success_msg.JPG" alt=""></img></p><p> If you see the above message, then you've successfully generated the service archive! This service archive can be hot deployed to the axis2</p><p> The plugin also adds a help document to the Eclipse help system. You should see it if you go to Eclipse help content </p><p align="center"><img border="0" src="images/tools/service/help.JPG" alt=""></img></p></div></div><div class="section"><p> </p><p> </p><p> </p><p> </p></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 2004-2006, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file
Added: webservices/site/trunk/targets/axis2/0_94/adb/adb-codegen-integration.html
URL: http://svn.apache.org/viewcvs/webservices/site/trunk/targets/axis2/0_94/adb/adb-codegen-integration.html?rev=366133&view=auto
==============================================================================
--- webservices/site/trunk/targets/axis2/0_94/adb/adb-codegen-integration.html (added)
+++ webservices/site/trunk/targets/axis2/0_94/adb/adb-codegen-integration.html Thu Jan 5 01:17:47 2006
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - </title><style type="text/css" media="all">
+ @import url("../style/maven-base.css");
+
+ @import url("../style/maven-theme.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/" id="projectLogo"><img alt="Apache Axis 2.0" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
+ Last published: 05 January 2006
+ | Doc for 0.94</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis_2_0"><h5>Axis 2.0</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../">Download Axis2</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="../">Documentation</a><ul><li class="none"><a href="../0_93/index.html">Version 0.93</a></li><li class="none"><a href="../0_94/index.html">Version 0.94</a></li></ul></li><li class="expanded"><a href="../overview.html">Get Involved</a><ul><li class="none"><a href="../svn.html">Checkout the Source</a></li><li class="none"><a href="../siteHowTo.html">Build the Site</a></li><li class="none"><a href="../guidelines.html">Devel
oper Guidelines</a></li><li class="none"><a href="../refLib.html">Reference Library</a></li><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li><li class="none"><a href="../faq.html">FAQ</a></li></ul></li><li class="none"><a href="../thanks.html">Ackknowledgements</a></li><li class="expanded"><a href="../">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="none"><a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="ADB_Integration_With_Axis2"></a><h2>ADB Integration With Axis2</h2><div class="subsection"><a name="Introduction"></a><h3>Introduction</h3><p>ADB Integration with Axis2 is simple and straightforward. Given the
+extension mechanism of the Axis2 code generator, the obvious choice for the
+integrator is to write an extension. The extension that is added to support
+ADB is the SimpleDBExtension and can be found in the extensions list of the
+codegen-config.properties file</p></div><div class="subsection"><a name="Things_to_Remember"></a><h3>Things to Remember</h3><ol>
+ <li>The SimpleDBExtension adds a prefix to the ADB packaging. This prefix
+ is curently adb, hence all the ADB generated code will be inside the
+ adb.* package. This prefix is used by the ant build file template and any
+ change done to this prefix needs to be carefully handled in order to keep
+ the ant build intact.</li>
+ <li>SimpleDBExtension is made to process requests only when the databinding
+ framework is specified as ADB (using the switch -d adb )</li>
+</ol></div></div><div class="section"></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 2004-2006, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file