<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 at 2022-07-14 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20220714" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Generating a Web Service Client using Axis2 and
XmlBeans</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
      <script type="text/javascript" src="../js/apache-maven-fluido-1.6.min.js"></script>
<meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" /><meta http-equiv="content-type" content="" />      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Axis2"/></a></div>
        <div class="pull-right"><a href=".././" id="bannerRight"><img src="../images/axis.jpg" /></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2022-07-14<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.2<span class="divider">|</span></li>
        <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Axis2/Java">Axis2/Java</a><span class="divider">/</span></li>
    <li class="active ">Generating a Web Service Client using Axis2 and
XmlBeans</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Axis2/Java</li>
    <li><a href="../index.html" title="Home"><span class="none"></span>Home</a>  </li>
    <li><a href="../download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
    <li><a href="javascript:void(0)" title="Release Notes"><span class="icon-chevron-down"></span>Release Notes</a>
      <ul class="nav nav-list">
    <li><a href="../release-notes/1.6.1.html" title="1.6.1"><span class="none"></span>1.6.1</a>  </li>
    <li><a href="../release-notes/1.6.2.html" title="1.6.2"><span class="none"></span>1.6.2</a>  </li>
    <li><a href="../release-notes/1.6.3.html" title="1.6.3"><span class="none"></span>1.6.3</a>  </li>
    <li><a href="../release-notes/1.6.4.html" title="1.6.4"><span class="none"></span>1.6.4</a>  </li>
    <li><a href="../release-notes/1.7.0.html" title="1.7.0"><span class="none"></span>1.7.0</a>  </li>
    <li><a href="../release-notes/1.7.1.html" title="1.7.1"><span class="none"></span>1.7.1</a>  </li>
    <li><a href="../release-notes/1.7.2.html" title="1.7.2"><span class="none"></span>1.7.2</a>  </li>
    <li><a href="../release-notes/1.7.3.html" title="1.7.3"><span class="none"></span>1.7.3</a>  </li>
    <li><a href="../release-notes/1.7.4.html" title="1.7.4"><span class="none"></span>1.7.4</a>  </li>
    <li><a href="../release-notes/1.7.5.html" title="1.7.5"><span class="none"></span>1.7.5</a>  </li>
    <li><a href="../release-notes/1.7.6.html" title="1.7.6"><span class="none"></span>1.7.6</a>  </li>
    <li><a href="../release-notes/1.7.7.html" title="1.7.7"><span class="none"></span>1.7.7</a>  </li>
    <li><a href="../release-notes/1.7.8.html" title="1.7.8"><span class="none"></span>1.7.8</a>  </li>
    <li><a href="../release-notes/1.7.9.html" title="1.7.9"><span class="none"></span>1.7.9</a>  </li>
    <li><a href="../release-notes/1.8.0.html" title="1.8.0"><span class="none"></span>1.8.0</a>  </li>
    <li><a href="../release-notes/1.8.1.html" title="1.8.1"><span class="none"></span>1.8.1</a>  </li>
    <li><a href="../release-notes/1.8.2.html" title="1.8.2"><span class="none"></span>1.8.2</a>  </li>
      </ul>
  </li>
    <li><a href="../modules/index.html" title="Modules"><span class="none"></span>Modules</a>  </li>
    <li><a href="../tools/index.html" title="Tools"><span class="none"></span>Tools</a>  </li>
          <li class="nav-header">Documentation</li>
    <li><a href="../docs/toc.html" title="Table of Contents"><span class="none"></span>Table of Contents</a>  </li>
    <li><a href="../docs/installationguide.html" title="Installation Guide"><span class="none"></span>Installation Guide</a>  </li>
    <li><a href="../docs/quickstartguide.html" title="QuickStart Guide"><span class="none"></span>QuickStart Guide</a>  </li>
    <li><a href="../docs/userguide.html" title="User Guide"><span class="none"></span>User Guide</a>  </li>
    <li><a href="../docs/jaxws-guide.html" title="JAXWS Guide"><span class="none"></span>JAXWS Guide</a>  </li>
    <li><a href="../docs/pojoguide.html" title="POJO Guide"><span class="none"></span>POJO Guide</a>  </li>
    <li><a href="../docs/spring.html" title="Spring Guide"><span class="none"></span>Spring Guide</a>  </li>
    <li><a href="../docs/webadminguide.html" title="Web Administrator's Guide"><span class="none"></span>Web Administrator's Guide</a>  </li>
    <li><a href="../docs/migration.html" title="Migration Guide (from Axis1)"><span class="none"></span>Migration Guide (from Axis1)</a>  </li>
          <li class="nav-header">Resources</li>
    <li><a href="../faq.html" title="FAQ"><span class="none"></span>FAQ</a>  </li>
    <li><a href="../articles.html" title="Articles"><span class="none"></span>Articles</a>  </li>
    <li><a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki"><span class="none"></span>Wiki</a>  </li>
    <li><a href="../refLib.html" title="Reference Library"><span class="none"></span>Reference Library</a>  </li>
    <li><a href="../apidocs/index.html" title="Online Java Docs"><span class="none"></span>Online Java Docs</a>  </li>
          <li class="nav-header">Get Involved</li>
    <li><a href="../overview.html" title="Overview"><span class="none"></span>Overview</a>  </li>
    <li><a href="../git.html" title="Checkout the Source"><span class="none"></span>Checkout the Source</a>  </li>
    <li><a href="../mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a>  </li>
    <li><a href="../release-process.html" title="Release Process"><span class="none"></span>Release Process</a>  </li>
    <li><a href="../guidelines.html" title="Developer Guidelines"><span class="none"></span>Developer Guidelines</a>  </li>
    <li><a href="../siteHowTo.html" title="Build the Site"><span class="none"></span>Build the Site</a>  </li>
          <li class="nav-header">Project Information</li>
    <li><a href="../team-list.html" title="Project Team"><span class="none"></span>Project Team</a>  </li>
    <li><a href="../issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a>  </li>
    <li><a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code"><span class="none"></span>Source Code</a>  </li>
    <li><a href="../thanks.html" title="Acknowledgements"><span class="none"></span>Acknowledgements</a>  </li>
          <li class="nav-header">Apache</li>
    <li><a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License"><span class="none"></span>License</a>  </li>
    <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a>  </li>
    <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
    <li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a>  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">


<h1 class="title">Generating a Web Service Client using Apache
Axis2 and XMLBeans</h1>

<p>This document explains how to generate a Web service client
using Apache Axis2 and XMLBeans data binding. The service has the
following WSDL:</p>

<p><b>Code Listing 1: The WSDL file</b></p>

<div>
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;wsdl:definitions
   xmlns:apachesoap=&quot;http://xml.apache.org/xml-soap&quot;
   xmlns:impl=&quot;http://apache.org/axis2/Axis2UserGuide&quot;
   xmlns:intf=&quot;http://apache.org/axis2/Axis2UserGuide&quot;
   xmlns:wsdl=&quot;http://schemas.xmlsoap.org/wsdl/&quot;
   xmlns:wsdlsoap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;
   xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
   targetNamespace=&quot;http://apache.org/axis2/Axis2UserGuide&quot;&gt;

  &lt;wsdl:types&gt;
    &lt;schema
       elementFormDefault=&quot;qualified&quot;
       targetNamespace=&quot;http://apache.org/axis2/Axis2UserGuide&quot;
       xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
      
      &lt;!-- ELEMENTS --&gt;
      
      &lt;element name=&quot;DoInOnlyRequest&quot;&gt;
        &lt;complexType&gt;
          &lt;sequence&gt;
            &lt;element name=&quot;messageString&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;/sequence&gt;
        &lt;/complexType&gt;
      &lt;/element&gt;
      
      &lt;element name=&quot;TwoWayOneParameterEchoRequest&quot;&gt;
        &lt;complexType&gt;
          &lt;sequence&gt;
            &lt;element name=&quot;echoString&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;/sequence&gt;
        &lt;/complexType&gt;
      &lt;/element&gt;
      &lt;element name=&quot;TwoWayOneParameterEchoResponse&quot;&gt;
        &lt;complexType&gt;
          &lt;sequence&gt;
            &lt;element name=&quot;echoString&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;/sequence&gt;
        &lt;/complexType&gt;
      &lt;/element&gt;
      
      &lt;element name=&quot;NoParametersRequest&quot;&gt;
        &lt;complexType/&gt;
      &lt;/element&gt;
      &lt;element name=&quot;NoParametersResponse&quot;&gt;
        &lt;complexType/&gt;
      &lt;/element&gt;
      
      &lt;element name=&quot;MultipleParametersAddItemRequest&quot;&gt;
        &lt;complexType&gt;
          &lt;sequence&gt;
            &lt;element name=&quot;itemId&quot; type=&quot;xsd:int&quot;/&gt;
            &lt;element name=&quot;itemName&quot; type=&quot;xsd:string&quot;/&gt;
            &lt;element name=&quot;price&quot; type=&quot;xsd:float&quot;/&gt;
            &lt;element name=&quot;description&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;/sequence&gt;
        &lt;/complexType&gt;
      &lt;/element&gt;

      &lt;element name=&quot;MultipleParametersAddItemResponse&quot;&gt;
        &lt;complexType&gt;
          &lt;sequence&gt;
          &lt;element name=&quot;itemId&quot; type=&quot;xsd:int&quot;/&gt;
          &lt;element name=&quot;successfulAdd&quot; type=&quot;xsd:boolean&quot;/&gt;
          &lt;/sequence&gt;
        &lt;/complexType&gt;
      &lt;/element&gt;

    &lt;/schema&gt;
  &lt;/wsdl:types&gt;

  
  &lt;!-- MESSAGES --&gt;

  &lt;wsdl:message name=&quot;DoInOnlyRequestMessage&quot;&gt;
    &lt;wsdl:part name=&quot;input&quot; element=&quot;impl:DoInOnlyRequest&quot;/&gt;
  &lt;/wsdl:message&gt;

  &lt;wsdl:message name=&quot;TwoWayOneParameterEchoRequestMessage&quot;&gt;
    &lt;wsdl:part name=&quot;input&quot; element=&quot;impl:TwoWayOneParameterEchoRequest&quot;/&gt;
  &lt;/wsdl:message&gt;
  &lt;wsdl:message name=&quot;TwoWayOneParameterEchoResponseMessage&quot;&gt;
    &lt;wsdl:part name=&quot;output&quot; element=&quot;impl:TwoWayOneParameterEchoResponse&quot;/&gt;
  &lt;/wsdl:message&gt;

  &lt;wsdl:message name=&quot;NoParametersRequestMessage&quot;&gt;
    &lt;wsdl:part name=&quot;input&quot; element=&quot;impl:NoParametersRequest&quot;/&gt;
  &lt;/wsdl:message&gt;
  &lt;wsdl:message name=&quot;NoParametersResponseMessage&quot;&gt;
    &lt;wsdl:part name=&quot;output&quot; element=&quot;impl:NoParametersResponse&quot;/&gt;
  &lt;/wsdl:message&gt;

  &lt;wsdl:message name=&quot;MultipleParametersAddItemRequestMessage&quot;&gt;
    &lt;wsdl:part name=&quot;input&quot; element=&quot;impl:MultipleParametersAddItemRequest&quot;/&gt;
  &lt;/wsdl:message&gt;
  &lt;wsdl:message name=&quot;MultipleParametersAddItemResponseMessage&quot;&gt;
    &lt;wsdl:part name=&quot;output&quot; element=&quot;impl:MultipleParametersAddItemResponse&quot;/&gt;
  &lt;/wsdl:message&gt;


  &lt;!-- Port type (operations) --&gt;

  &lt;wsdl:portType name=&quot;Axis2UserGuidePortType&quot;&gt;

    &lt;wsdl:operation name=&quot;DoInOnly&quot; parameterOrder=&quot;input&quot;&gt;
      &lt;wsdl:input name=&quot;DoInOnlyRequestMessage&quot;
                  message=&quot;impl:DoInOnlyRequestMessage&quot;/&gt;
    &lt;/wsdl:operation&gt;

    &lt;wsdl:operation name=&quot;TwoWayOneParameterEcho&quot; parameterOrder=&quot;input&quot;&gt;
      &lt;wsdl:input name=&quot;TwoWayOneParameterEchoRequestMessage&quot;
                  message=&quot;impl:TwoWayOneParameterEchoRequestMessage&quot;/&gt;
      &lt;wsdl:output name=&quot;TwoWayOneParameterEchoResponseMessage&quot;
                  message=&quot;impl:TwoWayOneParameterEchoResponseMessage&quot;/&gt;
    &lt;/wsdl:operation&gt;

    &lt;wsdl:operation name=&quot;NoParameters&quot; parameterOrder=&quot;input&quot;&gt;
      &lt;wsdl:input name=&quot;NoParametersRequestMessage&quot;
                  message=&quot;impl:NoParametersRequestMessage&quot;/&gt;
      &lt;wsdl:output name=&quot;NoParametersResponseMessage&quot;
                   message=&quot;impl:NoParametersResponseMessage&quot;/&gt;
    &lt;/wsdl:operation&gt;

    &lt;wsdl:operation name=&quot;MultipleParametersAddItem&quot; parameterOrder=&quot;input&quot;&gt;
      &lt;wsdl:input name=&quot;MultipleParametersAddItemRequestMessage&quot;
                  message=&quot;impl:MultipleParametersAddItemRequestMessage&quot;/&gt;
      &lt;wsdl:output name=&quot;MultipleParametersAddItemResponseMessage&quot;
                  message=&quot;impl:MultipleParametersAddItemResponseMessage&quot;/&gt;
    &lt;/wsdl:operation&gt;

  &lt;/wsdl:portType&gt;


  &lt;!-- BINDING (bind operations) --&gt;
  &lt;wsdl:binding
     name=&quot;Axis2UserGuideSoapBinding&quot;
     type=&quot;impl:Axis2UserGuidePortType&quot;&gt;
    &lt;wsdlsoap:binding style=&quot;document&quot; transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/&gt;

    &lt;wsdl:operation name=&quot;DoInOnly&quot;&gt;
      &lt;wsdlsoap:operation soapAction=&quot;DoInOnly&quot;/&gt;
      &lt;wsdl:input&gt;
        &lt;wsdlsoap:body use=&quot;literal&quot;/&gt;
      &lt;/wsdl:input&gt;
    &lt;/wsdl:operation&gt;

    &lt;wsdl:operation name=&quot;TwoWayOneParameterEcho&quot;&gt;
      &lt;wsdlsoap:operation soapAction=&quot;TwoWayOneParameterEcho&quot;/&gt;
      &lt;wsdl:input&gt;
        &lt;wsdlsoap:body use=&quot;literal&quot;/&gt;
      &lt;/wsdl:input&gt;
      &lt;wsdl:output&gt;
        &lt;wsdlsoap:body use=&quot;literal&quot;/&gt;
      &lt;/wsdl:output&gt;
    &lt;/wsdl:operation&gt;

    &lt;wsdl:operation name=&quot;NoParameters&quot;&gt;
      &lt;wsdlsoap:operation soapAction=&quot;NoParameters&quot;/&gt;
      &lt;wsdl:input&gt;
        &lt;wsdlsoap:body use=&quot;literal&quot;/&gt;
      &lt;/wsdl:input&gt;
      &lt;wsdl:output&gt;
        &lt;wsdlsoap:body use=&quot;literal&quot;/&gt;
      &lt;/wsdl:output&gt;
    &lt;/wsdl:operation&gt;

    &lt;wsdl:operation name=&quot;MultipleParametersAddItem&quot;&gt;
      &lt;wsdlsoap:operation soapAction=&quot;MultipleParametersAddItem&quot;/&gt;
      &lt;wsdl:input&gt;
        &lt;wsdlsoap:body use=&quot;literal&quot;/&gt;
      &lt;/wsdl:input&gt;
      &lt;wsdl:output&gt;
        &lt;wsdlsoap:body use=&quot;literal&quot;/&gt;
      &lt;/wsdl:output&gt;
    &lt;/wsdl:operation&gt;
  &lt;/wsdl:binding&gt;


  &lt;!-- SERVICE --&gt;

  &lt;wsdl:service name=&quot;Axis2UserGuideService&quot;&gt;
    &lt;wsdl:port binding=&quot;impl:Axis2UserGuideSoapBinding&quot;
               name=&quot;Axis2UserGuide&quot;&gt;
      &lt;wsdlsoap:address location=&quot;http://localhost:8080/axis2/services/Axis2UserGuide&quot;/&gt;
    &lt;/wsdl:port&gt;
  &lt;/wsdl:service&gt;
&lt;/wsdl:definitions&gt;
</pre></div>

<p>Note that the document defines four operations, DoInOnly,
NoParameters, TwoWayOneParameterEcho, and
MultipleParametersAddItem. Each client will include methods for
calling each of these operations.</p>

<p>(For more information on WSDL, refer to: <a class="externalLink" href="http://www.w3.org/2002/ws/desc/">http://www.w3.org/2002/ws/desc/</a>
.)</p>

<p><b>The short story:</b></p>

<ol style="list-style-type: decimal">

<li><a href="../download.cgi#std-bin">Download</a>
and unpack the Apache Axis2 Standard Distribution, if you have not
done so already.</li>

<li>Create the client classes with the following command:<br />

<div>
<pre>
%AXIS2_HOME%\bin\WSDL2Java -uri Axis2UserGuide.wsdl -p org.apache.axis2.axis2userguide -d xmlbeans -s
</pre></div></li>

<li>Create the client (for example, Client.java) and save it in the
org/apache/axis2/axis2userguide directory.</li>

<li>Build the client by typing: <code>ant jar.client.</code></li>

<li>Make sure all the .jar files in the Axis2 lib directory are in
the CLASSPATH.</li>

<li>Assuming you have a corresponding service, run the client by
adding the generated Axis2UserGuideService-test-client.jar file in
build/lib to the CLASSPATH and type: <code>java
org.apache.axis2.axis2userguide.Client</code></li>
</ol>

<p><b>The long story:</b></p>

<p><a href="../download.cgi#std-bin">Download</a>
and unpack the Apache Axis2 Standard Distribution, if you have not
done so already. The <a href="../download.cgi#war">WAR
distribution</a> does not include the necessary utilities for
generating code, such as WSDL2Java.</p>

<p>The XMLBeans method of generating clients, unlike ADB, creates
individual classes for each object it must model. For example,
generating a client for this WSDL file created 642 files and
folders. A small number of these files are directly related to the
actual client you're creating. The rest are related to the
processing of XML, and include data bound objects for schemas,
encodings, and other objects needed to process messages.</p>

<p>To generate the client, issue the following command in Listing
2.</p>

<p><b>Code Listing 2. Generating the client</b></p>

<div>
<pre>
%AXIS2_HOME%\bin\WSDL2Java -uri Axis2UserGuide.wsdl -p org.apache.axis2.axis2userguide -d xmlbeans -s
</pre></div>

<p>This command analyzes the WSDL file and creates the stubs in the
package org.apache.axis2.axis2userguide. The options specify that
you want the XMLBeans data binding method (-d), and synchronous or
blocking methods (-s). In other words, when the client makes an
In-Out call to the service, it will wait for a response before
continuing.</p>

<p>Once you run this command, you will see several new items in the
directory. The first is the build.xml file, which contains the
instructions for <a class="externalLink" href="http://ant.apache.org/">Ant</a> to
compile the generated classes. The second is the src directory,
which contains all the generated classes. The third is the
resources directory, which includes files related to the actual
data binding process.</p>

<p>Now you need a client. To create a client, create a new class
and save it as Client.java in the org/apache/axis2/axis2userguide
directory. It should contain the following code in Listing 3.</p>

<p><b>Code Listing 3: Client.java</b></p>

<div>
<pre>
package org.apache.axis2.axis2userguide;

public class Client{
    public static void main(java.lang.String args[]){
        try{
            Axis2UserGuideServiceStub stub =
                new Axis2UserGuideServiceStub
                (&quot;http://localhost:8080/axis2/services/Axis2UserGuideService&quot;);

            doInOnly(stub);
            twoWayOneParameterEcho(stub);
            noParameters(stub);
            multipleParameters(stub);

        } catch(Exception e){
            e.printStackTrace();
            System.out.println(&quot;\n\n\n&quot;);
        }
    }

    /* fire and forget */
    public static void doInOnly(Axis2UserGuideServiceStub stub){
        try{
            DoInOnlyRequestDocument req =
                DoInOnlyRequestDocument.Factory.newInstance();
            DoInOnlyRequestDocument.DoInOnlyRequest data =
                req.addNewDoInOnlyRequest();

            data.setMessageString(&quot;fire and forget it!&quot;);

            stub.doInOnly(req);
            System.out.println(&quot;done&quot;);
        } catch(Exception e){
            e.printStackTrace();
            System.out.println(&quot;\n\n\n&quot;);
        }
    }

    /* two way call/receive */
    public static void twoWayOneParameterEcho(Axis2UserGuideServiceStub stub){
        try{
            TwoWayOneParameterEchoRequestDocument req =
                TwoWayOneParameterEchoRequestDocument.Factory.newInstance();
            TwoWayOneParameterEchoRequestDocument.TwoWayOneParameterEchoRequest data =
                req.addNewTwoWayOneParameterEchoRequest();

            data.setEchoString(&quot;echo! ... echo!&quot;);

            TwoWayOneParameterEchoResponseDocument res =
                stub.twoWayOneParameterEcho(req);

            System.out.println(res.getTwoWayOneParameterEchoResponse().getEchoString());
        } catch(Exception e){
            e.printStackTrace();
            System.out.println(&quot;\n\n\n&quot;);
        }
    }

    /* No parameters */
    public static void noParameters(Axis2UserGuideServiceStub stub){
        try{
            NoParametersRequestDocument req =
                NoParametersRequestDocument.Factory.newInstance();
            NoParametersRequestDocument.NoParametersRequest data =
                req.addNewNoParametersRequest();

            System.out.println(stub.noParameters(req));
        } catch(Exception e){
            e.printStackTrace();
            System.out.println(&quot;\n\n\n&quot;);
        }
    }

    /* multiple parameters */
    public static void multipleParameters(Axis2UserGuideServiceStub stub){
        try{
            MultipleParametersAddItemRequestDocument req =
                MultipleParametersAddItemRequestDocument.Factory.newInstance();
            MultipleParametersAddItemRequestDocument.
                MultipleParametersAddItemRequest data =
                req.addNewMultipleParametersAddItemRequest();

            data.setPrice((float)1.99);
            data.setItemId((int)23872983);
            data.setDescription(&quot;Must have for cooking&quot;);
            data.setItemName(&quot;flour&quot;);

            MultipleParametersAddItemResponseDocument res =
                stub.multipleParametersAddItem(req);
            MultipleParametersAddItemResponseDocument.
                MultipleParametersAddItemResponse dataRes =
                res.getMultipleParametersAddItemResponse();

            System.out.println(dataRes.getSuccessfulAdd());
            System.out.println(dataRes.getItemId());
        } catch(Exception e){
            e.printStackTrace();
            System.out.println(&quot;\n\n\n&quot;);
        }
    }
}
</pre></div>

<p>XMLBeans uses a different architecture from ADB. In XMLBeans,
processing centers around documents, which are created through the
use of factories, and which include inner classes for the objects
they contain. The process is still the same -- you create a
request, and send it using the stub -- the code is just a bit more
complex.</p>

<p>To build the client, type: <code>ant jar.client</code></p>

<p>This action creates two new directories, build and test. The
test directory will be empty, but the build directory will contain
two versions of the client. The first version in the lib directory
consists of two .jar files, one containing the Client class and the
stub implementations, and the other containing the XMLBeans-related
classes. The second version in the classes directory consists of
just the raw classes.</p>

<p>Make sure all the .jar files in the Axis2 lib directory are on
the classpath.</p>

<p>If you have a service corresponding to this client (if you
don't, check out the <a href="userguide-buildingservices.html">Building Services</a> document)
you can run the client by adding the two .jar files to your
classpath and typing:
<code>java org.apache.axis2.axis2userguide.Client</code></p>

<p>You should see the response in a console window of your servlet
container. It should look something like this:</p>

<p><img src="images/fig04.jpg" alt="Response in a console window of your servlet container" /><br /></p>

</html>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2022
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
