<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <meta http-equiv="content-type" content="">
  <title>Axis2 User's Guide</title>
</head>

<body lang="en-US" dir="ltr">
<h4><a name="Axis2_User's_Guide">Axis2 User's Guide</a></h4>

<p><i>-Axis2 Version 0.95</i></p>

<p><i>User Feedback: <a
href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a></i>. Prefix
subject with [Axis2]. To subscribe to mailing list see <a
href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>

<p align="right">Pages: <a href="userguide.html">Content</a>, <b>1</b>, <a
href="userguide2.html">2</a>, <a href="userguide3.html">3</a>, <a
href="userguide4.html">4</a>, <a href="userguide5.html">5</a></p>

<h2><a name="Introduction">Introduction</a></h2>

<p>Welcome to Axis2, the next generation of Apache Axis!!! This User's Guide
will help you to understand what Axis2 has to offer and how to get started
with it. We hope you will benefit from the power of Axis2.</p>

<h3><a name="Attention">Attention</a></h3>
<ul>
  <li><p style="margin-bottom: 0in">This User's Guide is written based on
    Axis2 standard binary distribution. (The standard binary distribution can
    be created from the source distribution using the maven goal <code>$maven
    dist-std-bin</code>). Please refer the <a
    href="installationguide.html#Download_Axis2">installation guide</a> for
    further information on the downloadables available in this release.</p>
  </li>
  <li><p>If you are new to Axis, it's highly recommended that you read <a
    href="http://ws.apache.org/axis/java/user-guide.html"
    target="_blank">Axis 1.x User's Guide</a> before you go any further in
    this guide.</p>
  </li>
</ul>

<h3><a name="What_is_Axis2_">What is Axis2?</a></h3>

<p>Axis2 is the next generation of Apache Axis. In late August 2004, during
the Axis2 Summit held in Colombo, Sri Lanka, a new architecture for Axis was
introduced which was much more flexible, efficient and configurable. Although
the architecture is new, some of the well established concepts from Axis 1.x
like handlers are preserved in Axis2. Axis2 comes with many new features,
enhancements and industry specification implementations.</p>

<p>After months of continued discussion and coding in this direction, Axis2
now delivers the following key features:</p>
<ul>
  <li><p style="margin-bottom: 0in"><strong>Speed</strong> - Axis2 uses its
    own object model and StAX (Streaming API for XML) parsing to achieve
    significantly greater speed than earlier versions of Apache Axis.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Low memory foot print</strong>-
    Axis2 was designed ground-up keeping low memory foot print in mind.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>AXIOM</strong> - Axis2 comes with
    its own light-weight object model, AXIOM, for message processing which is
    extensible, high performance and developer convenient</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong><a name="Hot_Deployment">Hot
    Deployment</a></strong> - Axis2 is equipped with the capability of
    deploying Web service &amp; handlers while system is up and running. In
    other words, new services can be added to the system without having to
    shut down server.Drop the required Web service archive into the services
    directory in the repository and deployment model will automatically
    deploy the service and make it available for use.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Asynchronous Web
    Services</strong> - Axis2 now supports asynchronous Web services &amp;
    asynchronous Web services invocation using non-blocking clients and
    transports .</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>MEP Support</strong> - Axis2 now
    comes handy with the flexibility to support Message Exchange Patterns
    (MEPs) with in-built support for basic MEPs defined in WSDL 2.0.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Flexibility</strong> - The Axis2
    architecture gives the developer complete freedom to insert extensions
    into the engine for custom header processing, system management, or
    <em>anything else you can imagine</em>.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Stability</strong> - Axis2
    defines a set of published interfaces which change relatively slowly
    compared to the rest of Axis.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Component-oriented
    Deployment</strong> - You can easily define reusable networks of Handlers
    to implement common patterns of processing for your applications, or to
    distribute to partners.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Transport Framework</strong> - We
    have a clean and simple abstraction for integrating and using Transports
    (i.e., senders and listeners for SOAP over various protocols such as
    SMTP, FTP, message-oriented middleware, etc), and the core of the engine
    is completely transport-independent.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>WSDL support</strong> - Axis2
    supports the Web Service Description Language, version <a
    href="http://www.w3.org/TR/wsdl">1.1</a> and <a
    href="http://www.w3.org/TR/wsdl20/">2.0</a>, which allows you to easily
    build stubs to access remote services, and also to automatically export
    machine-readable descriptions of your deployed services from Axis2.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Add-ons</strong> Several Web
    services specifications have been incorporated including <a
    href="http://ws.apache.org/wss4j/" target="_blank">WSS4J</a> for
    security, <a href="http://ws.apache.org/sandesha/"
    target="_blank">Sandesha</a> for reliable messaging, <a
    href="http://ws.apache.org/kandula/" target="_blank">Kandula</a> which is
    an encapsulation of WS-Coordination, WS-AtomicTransaction and
    WS-BusinessActivity.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Composition and
    Extensibility</strong> - modules and phases improve support for
    composability and extensibility. Modules supports composability and is
    able to add support for new WS-* specifications in a simple and clean
    manner. They are however not <a href="#Hot_Deployment">hot deployable</a>
    as they change the overall behavior of the system.</p>
  </li>
</ul>

<p>We hope you enjoy using Axis2. Please note that this is an open-source
effort. If you feel the code could use some new features or fixes, please get
involved and lend us a hand! The Axis developer community welcomes your
participation.</p>

<p>Let us know what you think!</p>

<p>Please send your feedback on Axis2 to "<a
href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a>" and make
sure to prefix the subject of the mail with [Axis2].</p>

<h3><a name="Axis2_Complete_Features_List">Axis2 Complete Features
List</a></h3>
<ol type="1">
  <li>AXIOM, an XML object model working on StAX (Streaming API for XML)
    parsing optimized for SOAP 1.1/1.2 Messages. This has complete XML
    infoset support.</li>
  <li>Support for One-Way Messaging (In-Only) and Request Response Messaging
    (In-Out)</li>
  <li>Module Architecture, mechanism to extend the SOAP Processing Model</li>
  <li>Module version support , can have multiple versions of the same module
    and use them depending on the requirement.</li>
  <li>Content hierarchy</li>
  <li>Archive based deployment Model and Directory based deployment model</li>
  <li>JWS like deployment (making Java class into Web service)</li>
  <li>WSDL Code Generation Tool for Stub and skeletons</li>
  <li>WS-Addressing, both the submission (2004/08) and final (2005/08)
    versions</li>
  <li>WSS4J module for security</li>
  <li>Improved and user friendly Client API</li>
  <li>WSDL2Java and Java2WSDL</li>
  <li>REST (REpresentational State Transfer) Support</li>
  <li>Transports supports: HTTP, SMTP, TCP, JMS</li>
  <li>Raw XML providers</li>
  <li>Support for MTOM/ MIME/ SwA</li>
  <li>SAAJ implementation</li>
  <li>DOOM</li>
  <li>Pack/Unpack capability for the generated code</li>
  <li>Axis Data Binding - ADB (Framework and Schema Compiler)</li>
  <li>Numerous bug fixes since last release</li>
  <li>Transport framework improvements (ListenerManager)- <span
    style="color: #FF0000">New</span></li>
  <li>AxisServlet auto start when application server get start up- <span
    style="color: #FF0000">New</span></li>
  <li>Module disengagement support- <span
  style="color: #FF0000">New</span></li>
  <li>Loading module (.mar) from classpath- <span
    style="color: #FF0000">New</span></li>
  <li>Sessions scoping for Application, SOAP, Transport and Request
    levels-<span style="color: #FF0000">New</span></li>
</ol>

<h4><a name="Experimental_Features_List">Experimental Features List</a></h4>
<ol type="1">
  <li><a href="WS_policy.html" target="_blank">Server side &amp; client side
    Web Service Policy support</a></li>
  <li>?wsdl and ?xsd support</li>
  <li>Generating ServiceClient for a given WSDL and invoke the corresponding
    service using generated client.</li>
</ol>

<h4><a name="Major_Changes_Since_Last_Release">Major Changes Since Last
Release</a></h4>
<ol type="1">
  <li>Transport framework improvements (ListenerManager)</li>
  <li>Changed the way of adding action to mapping (wsamapping) from parameter
    to child element so with this version onward the way of adding mapping is
    as follows:</li>
  <pre>   
&lt;actionMapping&gt;MyMapping&lt;/actionMapping&gt;
  </pre>
  <li>Refactored following packages in Axiom.
    <ul>
      <li>org.apache.axiom.om.impl.llom.builder to
        org.apache.axiom.om.impl.builder</li>
      <li>org.apache.axiom.om.impl.llom.mtom to
      org.apache.axiom.om.impl.mtom</li>
      <li>org.apache.axiom.om.impl.llom.serialize to
        org.apache.axiom.om.impl.serialize</li>
      <li>org.apache.axiom.om.impl.llom.traverse to
        org.apache.axiom.om.impl.traverse</li>
    </ul>
  </li>
</ol>

<h3><a name="Tools_included_in this_Release">Tools Included In This
Release</a></h3>
<ol type="1">
  <li>Axis2 Web Application (Web App)</li>
  <li>WSDL2WS- <!--<a href="CodegenTools-EclipsePlugin.html" target="_blank">Eclipse
    plugin</a><a>/</a>-->
     <a href="CodegenToolReference.html" target="_blank">Command line
    version</a><!--<a>/</a><a
    href="tools\idea\Idea_plug-in_userguide.html#WSDL2Java_Code_Generation" target="_blank">IntelliJ
    IDEA plugin</a>-->
  </li>
  <!--<li>Service Archive Wizard- <a
  href="ServiceArchiveToolReference.html" target="_blank">Eclipse plugin</a>/ <a
  href="tools\idea\Idea_plug-in_userguide.html#Create_Service_Archive" target="_blank">IntelliJ
  IDEA plugin</a>-->
</ol>

<p><a href="http://ws.apache.org/axis2/download.cgi"
target="_blank">Download</a> above plugins</p>

<h3>What Still To Do?</h3>

<p>See list of what we think needs to be done, and consider helping out if
you're interested and able!</p>
<ol type="1">
  <li>JAX-RPC 1.1 and/or JAX-WS compliance</li>
  <li>SOAP Encoding</li>
  <li>Binary serialization and de-serialization support</li>
  <li>Management Interface for Axis2</li>
  <li>Implementation of other Transports.</li>
  <li>Resource framework implementation (WS-RF) and Enterprise Web services
    such as JSR 109 support</li>
  <li>Completion of Interop tests</li>
</ol>

<p align="right"><a href="userguide.html"><img src="images/arrow_left.gif">
Previous</a> | <a href="userguide2.html">Next <img
src="images/arrow_right.gif"></a></p>
Pages: <a href="userguide.html">Content</a>, <b>1</b>, <a
href="userguide2.html">2</a>, <a href="userguide3.html">3</a>, <a
href="userguide4.html">4</a>, <a href="userguide5.html">5</a></body>
</html>
