<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2016-05-02 
 | Rendered using Apache Maven Fluido Skin 1.4
-->
<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="20160502" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Apache Axis2 User's Guide- Introducing Axis2</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.4.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.4.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: 2016-05-02
                      <span class="divider">|</span>
                   </li>
                  <li id="projectVersion">Version: 1.7.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 ">Apache Axis2 User's Guide- Introducing Axis2</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>
              </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 class="active">
  
            <a href="#"><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" >
                                  
            <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License. --><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">


<h1>Apache Axis2 User's Guide</h1>

<p>This guide provides a starting place for users who are new to
Apache Axis2. It also covers some advanced topics, such as how to
use Axis2 to create and deploy Web services as well as how to use
WSDL to generate both clients and services.</p>
For experienced users of Apache Axis2, we recommend the <a href="adv-userguide.html">Advanced User's Guide.</a> <a name="intro" id="intro"></a>

<h1>Introducing Axis2</h1>

<p>This section introduces Axis2 and its structure, including an
explanation of various directories/files included in the latest
Axis2 <a href="../download.cgi">download</a>.</p>

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

<ul>

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

<ul>

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

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

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

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

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

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

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

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

<li><a href="userguide-installingtesting.html#installingtesting">Installing and
Testing Client Code</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 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>
<a name="whatis" id="whatis"></a>

<div class="section">
<h2><a name="What_is_Axis2"></a>What is Axis2?</h2>

<p>The Apache Axis2 project is a Java-based implementation of both
the client and server sides of the Web services equation. Designed
to take advantage of the lessons learned from Apache Axis 1.0,
Apache Axis2 provides a complete object model and a modular
architecture that makes it easy to add functionality and support
for new Web services-related specifications and
recommendations.</p>

<p>Axis2 enables you to easily perform the following tasks:</p>

<ul>

<li>Send SOAP messages</li>

<li>Receive and process SOAP messages</li>

<li>Create a Web service out of a plain Java class</li>

<li>Create implementation classes for both the server and client
using WSDL</li>

<li>Easily retrieve the WSDL for a service</li>

<li>Send and receive SOAP messages with attachments</li>

<li>Create or utilize a REST-based Web service</li>

<li>Create or utilize services that take advantage of the <a class="externalLink" href="http://www.oasis-open.org/committees/download.php/16790/wss-v1.1-spec-os-SOAPMessageSecurity.pdf">
WS-Security</a>, <a class="externalLink" href="http://xml.coverpages.org/ws-reliablemessaging20030313.pdf">WS-ReliableMessaging</a>,
<a class="externalLink" href="http://www.w3.org/2002/ws/addr/">WS-Addressing</a>,
<a class="externalLink" href="http://docs.oasis-open.org/ws-tx/wscoor/2006/06">WS-Coordination</a>,
and <a class="externalLink" href="http://docs.oasis-open.org/ws-tx/wsat/2006/06">
WS-Atomic Transaction</a> recommendations</li>

<li>Use Axis2's modular structure to easily add support for new
recommendations as they emerge</li>
</ul>

<p>Many more features exist as well, but this user guide
concentrates on showing you how to accomplish the first five tasks
on this list.</p>
<a name="underhood" id="underhood"></a>

<div class="section">
<h2><a name="Whats_Under_the_Hood"></a>What's Under the Hood?</h2>

<p>To understand Axis2 and what it does, you must have a good idea
of the life cycle of a Web services message. Typically, it looks
something like this:</p>

<p><img src="images/fig01.jpg" alt="Lifecycle of a Web services message" /><br /></p>

<p>The sending application creates the original SOAP message, an
XML message that consists of headers and a body. (For more
information on SOAP, see &quot;<a href="userguide-introtoservices.html">Introduction to Services</a>&quot;.)
If the system requires the use of WS* recommendations such as
WS-Addressing or WS-Security, the message may undergo additional
processing before it leaves the sender. Once the message is ready,
it is sent via a particular transport such as HTTP, JMS, and so
on.</p>

<p>The message works its way over to the receiver, which takes in
the message via the transport listener. (In other words, if the
application doesn't have an HTTP listener running, it's not going
to receive any HTTP messages.) Again, if the message is part of a
system that requires the use of WS-Security or other
recommendations, it may need additional processing for the purpose
of checking credentials or decrypting sensitive information.
Finally, a dispatcher determines the specific application (or other
component, such as a Java method) for which the message was
intended, and sends it to that component. That component is part of
an overall application designed to work with the data being sent
back and forth.</p>
<a name="handlessoap" id="handlessoap"></a>

<div class="section">
<h2><a name="How_Axis2_Handles_SOAP_Messages"></a>How Axis2 Handles SOAP Messages</h2>

<p>Axis2 can handle processing for both the sender and the receiver
in a transaction. From the Axis2 perspective, the structure looks
like this:</p>

<p><img src="images/fig02.jpg" alt="Axis2 handles SOAP messages" /><br /></p>

<p>On each end, you have an application designed to deal with the
(sent or received) messages. In the middle, you have Axis2, or
rather, you <i>can</i> have Axis2. The value of Web services is
that the sender and receiver (each of which can be either the
server or the client) don't even have to be on the same platform,
much less running the same application. Assuming that Axis2 is
running on both sides, the process looks like this:</p>

<ul>

<li>The sender creates the SOAP message.</li>

<li>Axis &quot;handlers&quot; perform any necessary actions on that message
such as encryption of WS-Security related messages.</li>

<li>The transport sender sends the message.</li>

<li>On the receiving end, the transport listener detects the
message.</li>

<li>The transport listener passes the message on to any handlers on
the receiving side.</li>

<li>Once the message has been processed in the &quot;pre-dispatch&quot;
phase, it is handed off to the dispatchers, which pass it on to the
appropriate application.</li>
</ul>

<p>In Axis2, these actions are broken down into &quot;phases&quot;, with
several pre-defined phases, such as the &quot;pre-dispatch&quot;, &quot;dispatch,&quot;
and &quot;message processing&quot;, being built into Axis2. Each phase is a
collection of &quot;handlers&quot;. Axis2 enables you to control what
handlers go into which phases, and the order in which the handlers
are executed within the phases. You can also add your own phases
and handlers.</p>

<p>Handlers come from &quot;modules&quot; that can be plugged into a running
Axis2 system. These modules, such as Rampart, which provides an
implementation of WS-Security, are the main extensibility
mechanisms in Axis2.</p>
<a name="distributions" id="distributions"></a>

<div class="section">
<h2><a name="Axis2_Distributions"></a>Axis2 Distributions</h2>

<p>Axis2 is released in several <a href="../download.cgi">
distributions</a>. Which one you need depends on what you'll be
doing with it.</p>
<a name="sbd" id="sbd"></a>

<div class="section">
<h3><a name="The_Axis2_Standard_Binary_Distribution"></a>The Axis2 Standard Binary Distribution</h3>

<p>If you're developing services and applications, you'll need the
Axis2 Standard Binary Distribution. The distribution includes all the
necessary *.jar files, as well as a variety of scripts that ease
development. It has the following structure.</p>

<p><b>Code Listing 1: Axis2 Standard Binary Distribution</b></p>

<div>
<pre>
bin
      axis2.bat
      axis2.sh
      axis2server.bat
      axis2server.sh
      java2wsdl.bat
      java2wsdl.sh
      wsdl2java.bat
      wsdl2java.sh
      setenv.sh
lib
      activation-1.1.jar
      ...
      XmlSchema.jar
repository
             modules
         modules.list 
                addressing-1.1.mar
               ..
             services
         services.list
                version.aar
         ..
samples
      ...
webapp
      ...
conf
    axis2.xml

LICENSE.txt
README.txt
NOTICE.txt
INSTALL.txt
release-notes.html
</pre></div>

<p>The bin directory includes a number of useful scripts. They
include axis2.bat (or axis2.sh), which enables you to easily
execute a Java command without having to manually add all the Axis2
jar files to the classpath, java2wsdl.bat (and .sh) and
wsdl2java.bat (and .sh), which enable you to easily generate Java
code from a WSDL file and vice versa, and axis2server.bat (and sh),
a simple Web server that enables you to build Axis2's capability to
send and receive messages into your own application.</p>

<p>As expected, the lib directory includes all the necessary .jar
files. Services and modules are added to the repository directory.
Axis2 comes with a standard module implementing WS-Addressing, and
you can add any other necessary module such as Rampart to the
repository/modules directory.</p>

<p>conf directory includes the axis2.xml which is the global
deployment descriptor.</p>

<p>Finally, the samples directory includes all the sample code
distributed with Axis2. See the list of <a href="userguide-samples.html">samples and their descriptions</a>.</p>
<a name="hierarchy" id="hierarchy"></a>
</div>
<div class="section">
<h2><a name="axis2.war_Distribution_Directory_Hierarchy"></a>axis2.war Distribution Directory Hierarchy</h2>

<p>axis2.war is available in <a href="../download.cgi">
WAR (Web Archive) Distribution</a>. The server side of Axis2 ships
as a J2EE application, and has the following structure shown in
Code Listing 2.</p>

<p><b>Code Listing 2: Server Side of Axis2</b></p>

<div>
<pre>
axis2-web 
META-INF
WEB-INF
    classes 
    conf
        axis2.xml 
    lib
        activation.jar
        ...
        xmlSchema.jar
    modules
        modules.list 
        addressing.mar
        ...
        soapmonitor.mar
    services
        services.list
        aservice.aar
        ...
        version.aar
    web.xml
</pre></div>

<p>Starting at the top, axis2-web is a collection of JSPs that make
up the <a href="webadminguide.html">Axis2 administration
application</a>, through which you can perform any needed actions
such as adding services and engaging and dis-engaging modules. The
WEB-INF directory represents the actual Axis2 application,
including all the *.jar files, any included modules, and even the
deployed services themselves.</p>

<p>The classes directory holds any class or property files that are
needed by Axis2 itself, such as log4j.properties. Any actual
services to be handled by the system reside in the services
directory in the form of an axis archive, or *.aar file. This file
contains any classes related to the service, as well as the
services.xml file, which controls any additional requirements, such
as the definition of message senders and message receivers.</p>

<p>The main file in all this is axis2.xml, which controls how the
application deals with received messages. It defines message
receivers and transport receivers, as well as defining transport
senders and determining which modules are active. It also defines
the order of phases, and the handlers to be executed within each
phase.</p>

<p>You can control all of this information through the use of the
Web application, but if you restart the Axis2 application, these
changes are lost and the server goes back to the definitions in the
axis2.xml file.</p>

<p>Axis2 also provides a third distribution, the <a href="../download.cgi">
source distribution</a>, which enables you to generate this .war
file yourself.</p>
<a name="docs" id="docs"></a>

<div class="section">
<h2><a name="Axis2_Documentation_Distribution_Directory_Hierarchy"></a>Axis2 Documentation Distribution Directory Hierarchy</h2>

<p>The Documents distribution includes all Axis2 documentation
including the xdcos and javadocs. It has the following
structure:</p>

<p><b>Code Listing 3: Axis2 Documents Distribution</b></p>

<div>
<pre>
docs
      javadocs
      xdocs

LICENSE.txt
README.txt
release-notes.html
</pre></div>

<p>The javadocs directory includes all the standard <a href="../api/index.html">API documentation</a> for the Axis2
API, with other documentation (like this document) in the xdocs
directory.</p>
<a name="clients" id="clients"></a>

<div class="section">
<h2><a name="Axis2_and_Clients"></a>Axis2 and Clients</h2>

<p>Now that explains how Axis2 behaves as part of a Web
application. What about a standalone client that is not part of a
J2EE application? In that case, a sender can use the Axis2 default
properties, in other words, no special handlers, and so on. But you
also have the option to tell the client to load its own copy of the
axis2.xml file and behave accordingly.</p>

<p><b>See Next Section</b> - <a href="userguide-installingtesting.html#installingtesting">Installing and
Testing Client Code</a></p>

</html>
                  </div>
            </div>
          </div>

    <hr/>

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

        
                </div>
    </footer>
        </body>
</html>