<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2017-05-06 
 | 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="20170506" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Apache Axis2 User's Guide-Installing and Testing Client
Code</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: 2017-05-06<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.5<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 ">Apache Axis2 User's Guide-Installing and Testing Client
Code</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>
      </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="../svn.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 lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<a name="installingtesting" id="installingtesting"></a>

<h1>Apache Axis2 User's Guide - Installing and Testing Client
Code</h1>

<p>The best way to make sure that your system is running Apache
Axis2 is to install and test both a service and a client. The
process involves the following steps:</p>

<div class="section">
<h2><a name="Content"></a>Content</h2>

<ul>

<li><a href="userguide.html#intro">Introducing Axis2</a><br />

<ul>

<li><a href="userguide.html#whatis">What is Axis2?</a></li>

<li><a href="userguide.html#underhood">What's under the
hood?</a></li>

<li><a href="userguide.html#handlessoap">How Axis2 handles SOAP
messages</a></li>

<li><a href="userguide.html#distributions">Axis2
distributions</a></li>

<li><a href="userguide.html#sbd">The Axis2 Standard Binary
Distribution</a></li>

<li><a href="userguide.html#hierarchy">Axis2.war Directory
Hierarchy</a></li>

<li><a href="userguide.html#docs">Axis2 Documents
Distribution</a></li>

<li><a href="userguide.html#clients">Axis2 and clients</a></li>
</ul>
</li>

<li><a href="userguide-installingtesting.html#installingtesting"><b>Installing
and testing client code</b></a></li>

<li><a href="userguide-introtoservices.html#introservices">Introduction to
Services</a><br />

<ul>

<li><a href="userguide-introtoservices.html#messageexchange">Message Exchange
Patterns</a></li>
</ul>
</li>

<li><a href="userguide-creatingclients.html#createclients">Creating
Clients</a><br />

<ul>

<li><a href="userguide-creatingclients.html#choosingclient">Choosing a Client
Generation Method</a></li>

<li><a href="userguide-creatingclients.html#generating">Generating
Clients</a></li>

<li><a href="userguide-creatingclients.html#adb">Axis Data Binding
(ADB)</a></li>
</ul>
</li>

<li><a href="userguide-buildingservices.html#buildservices">Building
Services</a><br />

<ul>

<li><a href="userguide-buildingservices.html#getcomfortable">Getting
Comfortable with the Available Options</a></li>

<li><a href="userguide-buildingservices.html#createscratch">Creating a service
from scratch</a></li>

<li><a href="userguide-buildingservices.html#deploypojo">Deploying
Plain Old Java Objects</a></li>

<li><a href="userguide-buildingservices.html#deployrun">Deploying
and running an Axis2 service created from WSDL</a></li>
</ul>
</li>

<li><a href="userguide-samples.html">Samples</a></li>

<li><a href="userguide-forfurtherstudy.html">For Further
Study</a></li>
</ul>

<p><b>The Short Story:</b></p>

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

<li>Install Apache Axis2 in a suitable container, such as Apache
Tomcat, by copying the axis2.war file to the webapps
directory.</li>

<li>Install the service into the Axis2 application by copying the
*.aar file into the Axis2 services directory.</li>

<li>Install the client on the system on which you want to run it,
and make sure all the Axis2 libraries are on the CLASSPATH.</li>

<li>Run the client.</li>
</ol>


<p><b>The Long Story:</b></p>

<p>Start by installing a suitable container, such as <a class="externalLink" href="http://tomcat.apache.org/">Apache Tomcat</a>. Any J2EE server will
do. To install Apache Axis2 on the server, <a href="../download.cgi">download</a> the Axis2 WAR
distribution and place the axis2.war file in the server's webapps directory. The
server will then expand the distribution into its proper structure,
as seen in the <a href="userguide.html#hierarchy">earlier
section</a>.</p>

<p>Apache Axis2 services come bundled as *.aar files, which contain
all the pieces necessary to define the service, such as the
necessary classes and libraries and the services.xml file that
defines the service's behavior. You can install the service using
the <a href="webadminguide.html">Web administration
application</a>, but to make things simple for now, copy the *.aar
file into the Axis2 services directory. For example, to install the
MyService service distributed as one of the Axis2 samples, copy the
file &lt;AXIS2_HOME&gt;/samples/userguide/build/MyService.aar file,
which is built using the <tt>ant</tt> command, from
&lt;AXIS2_HOME&gt;/samples/userguide, to the directory
&lt;J2EE_HOME&gt;/webapps/axis2/WEB-INF/services.</p>

<p>Your client can come in any number of forms, from a collection
of files to a single *.jar file. The important thing is to ensure
that all the appropriate classes are on the classpath. In addition
to the classes that pertain to the actual client, you must also add
the Axis2 .jar files into the CLASSPATH. Normally you will do this
by downloading and unpacking the <a href="../download.cgi">
Axis2 Standard Distribution</a> and adding the *.jar files in the
lib directory to your CLASSPATH, or you also have the option of
running your client using the axis2.bat (or axis2.sh) script, which
takes care of it for you. For example, you can run a client with
the command:</p>

<p>axis2 org.apache.axis2.axis2userguide.Client.</p>

<p><b>See Next Section</b>- <a href="userguide-introtoservices.html#introservices">Introduction to
Services</a></p>

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