<!--
  ~ 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.
  -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
<meta http-equiv="content-type" content="" />
<title>Apache Axis2 User's Guide-For Further Study</title>
<link href="../css/axis-docs.css" rel="stylesheet" type="text/css"
media="all" />
</head>
<body>
<a name="#forfurtherstudy" id="#forfurtherstudy"></a>
<h1>Apache Axis2 User's Guide - For Further Study</h1>
<!--<h2>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 document
hierarchy</a></li>
<li><a href="userguide.html#clients">Axis2 and clients</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>
<ul>
<li><a href="userguide-samples.html#clients">Clients</a></li>
<li><a href="userguide-samples.html#services">Services</a></li>
<li><a href="userguide-samples.html#wsdl">Sample WSDL files</a></li>
<li><a href="userguide-samples.html#others">Other Samples</a></li>
</ul>
</li>
<li><a href="userguide-forfurtherstudy.html"><strong>For Further
Study</strong></a></li>
</ul>-->
<h2>Resources</h2>
<p>Axis2 Architecture-<a href=
"http://ws.apache.org/axis2/@axis2_version_dir@/Axis2ArchitectureGuide.html">http://ws.apache.org/axis2/@axis2_version_dir@/Axis2ArchitectureGuide.html</a></p>
<p>XML processing with AXIOM-<a href=
"http://ws.apache.org/commons/axiom/OMTutorial.html">http://ws.apache.org/commons/axiom/OMTutorial.html</a></p>
<p>RESTful Web Services-<a href=
"http://ws.apache.org/axis2/@axis2_version_dir@/rest-ws.html">http://ws.apache.org/axis2/@axis2_version_dir@/rest-ws.html</a></p>
<p>TCP Transport-<a href=
"http://ws.apache.org/axis2/@axis2_version_dir@/tcp-transport.html">http://ws.apache.org/axis2/@axis2_version_dir@/tcp-transport.html</a></p>
<p>HTTP Transports-<a href=
"http://ws.apache.org/axis2/@axis2_version_dir@/http-transport.html">http://ws.apache.org/axis2/@axis2_version_dir@/http-transport.html</a></p>
<p>MTOM with Axis2-<a href=
"http://ws.apache.org/axis2/@axis2_version_dir@/mtom-guide.html">http://ws.apache.org/axis2/@axis2_version_dir@/mtom-guide.html</a></p>
<p>Securing SOAP Messages with Apache Rampart- <a href=
"../modules/rampart/@axis2_version_dir@/security-module.html">http://ws.apache.org/axis2/modules/rampart/@axis2_version_dir@/security-module.html</a></p>
<p>SOAPMonitor-<a href=
"http://ws.apache.org/axis2/@axis2_version_dir@/soapmonitor-module.html">http://ws.apache.org/axis2/@axis2_version_dir@/soapmonitor-module.html</a></p>
<p>Apache Axis2 Advance User's Guide- <a href=
"adv-userguide.html">http://ws.apache.org/axis2/@axis2_version_dir@/adv-userguide.html</a></p>
</body>
</html>
