<!--
  ~ 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- The Samples</title>
</head>
<body lang="en" xml:lang="en">
<a name="samples" id="samples"></a>
<h1>Apache Axis2 User's Guide - The Samples</h1>
<p>The Apache Axis2 Standard Distribution provides a number of
samples you can use as a guide for implementing specific features
and capabilities. These services are listed in this section.</p>
<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#handlesjson">How Axis2 handles JSON
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">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 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"><strong>Samples</strong></a>
<ul>
<li><a href=
"userguide-samples.html#clients"><strong>Clients</strong></a></li>
<li><a href=
"userguide-samples.html#services"><strong>Services</strong></a></li>
<li><a href="userguide-samples.html#wsdl"><strong>Sample WSDL
files</strong></a></li>
<li><a href="userguide-samples.html#others"><strong>Other
Samples</strong></a></li>
</ul>
</li>
<li><a href="userguide-forfurtherstudy.html">For Further
Study</a></li>
</ul>
<a name="clients" id="clients"></a>
<h2>Clients (in AXIS2_HOME/samples/userguide/src/clients):</h2>
<p><strong>EchoBlockingClient.java</strong>: A basic example of the
send/receive MEP.</p>
<p><strong>EchoBlockingDualClient.java</strong>: Specifies that the
return message should be sent over a different channel than the
request message.</p>
<p><strong>EchoBlockingWsaBasedClient.java</strong>: Provides an
example of using the capabilities of WS-Addressing action
mapping.</p>
<p><strong>EchoNonBlockingClient.java</strong>: Demonstrates an
asynchronous request using Callbacks.</p>
<p><strong>EchoNonBlockingDualClient.java</strong>: Similar to the
above, but uses a separate listener for the response.</p>
<p><strong>ClientForWebServiceWithModule.java</strong>: Simply
makes a call to a service with engaged modules.</p>
<p><strong>ClientSideModuleEngagement.java</strong>: Demonstrates
the use of modules on the client side, in addition to the server
side.</p>
<p><strong>MailClient.java</strong>: Demonstrates the use of the
Robust In-Only MEP.</p>
<p><strong>PingClient.java</strong>: A simple "fire and forget"
client.</p>
<p><strong>RESTClient.java</strong>: Demonstrates the ability to
request a REST response rather than a SOAP response. Also
demonstrates setting arbitrary properties on the Options
object.</p>
<p><strong>TCPClient.java</strong>: Provides an example of using
the TCP transport rather than HTTP.</p>
<a name="services" id="services"></a>
<h2>Services (in AXIS2_HOME/samples/userguide):</h2>
<p><strong>groovyService.aar</strong>: Demonstrates how to use
Groovy classes in the processing of SOAP messages.</p>
<p><strong>MyService.aar</strong>: Provides simple "echo" and
"ping" operations.</p>
<p><strong>MyServiceWithModule.aar</strong>: Same as above, but
demonstrates how to engage a module.</p>
<p><strong>WsaMappingService.aar</strong>: Demonstrates the mapping
of WS-Addressing actions.</p>
<a name="wsdl" id="wsdl"></a>
<h2>Sample WSDL files (in AXIS2_HOME/samples):</h2>
<p><strong>Axis2SampleDocLit.wsdl</strong>: Demonstrates the use of
the Document/Literal WSDL pattern, rather than RPC.</p>
<p><strong>perf.wsdl</strong>: Demonstrates the use of array values
as input values.</p>
<a name="others" id="others"></a>
<h2>Other samples</h2>
<h3>In AXIS2_HOME/samples Directory:</h3>
<!--<p><strong>amazonqs</strong>: Uses the Amazon Queue Service to store and
retrieve String objects.</p>-->
<p><strong>faulthandling</strong>: Demonstrates the use of SOAP
faults and their definitions in WSDL enabling exception processing
in the client.</p>
<!--<p><strong>googlesearch</strong>: Creates a GUI-based application making use
of Google Web Services asynchronously.</p>-->
<p><strong>googleSpellcheck</strong>: Demonstrates both synchronous
and non-synchronous use of the Google Web Service in a GUI.</p>
<p><strong>mtom</strong>: Demonstrates the use of MTOM and SOAP
with Attachments to send binary files to a service.</p>
<p><strong>saopwithattachments</strong>: Demonstrates the
capabilities and power of SOAP with Attachment support and the
Attachment API of Axis2.</p>
<p><strong>pojo</strong>: Example of a POJO (Plain Old Java Object)
Web service. It shows how to expose the methods of a Java class as
a Web service using Apache Aixs2.</p>
<p><strong>servicelifecycle</strong>: Demonstrates the usage of a
service life cycle and a bit of session management. The main idea
is to show where and how to use the service life cycle interface
and session related methods.</p>
<!--<p><strong>sgccalculator</strong>: A simple calculator that demonstrates the
use of Service Groups.</p>-->
<p><strong>databinding</strong>: Demonstrates how to use WSDL2Java
generated code with Castor.</p>
<p><strong>version</strong>: A very simple service that simply
outputs the Apache Axis2 version.</p>
<p><strong>yahoorestearch</strong>: A complete example of the use
of a REST service rather than a SOAP service.</p>
<h3>External:</h3>
<p><strong>FlickrClient</strong> : Demonstrates code generation
capabilities for WSDL 2.0. The FlickrService.wsdl describes
services offered by flickr in terms of WSDL 2.0. It also
demonstrates how a restful service can be described using the
HTTPBinding of wsdl 2.0.</p>
<p>Extract the <a href=
"http://dist.wso2.org/products/wsas/java/nightly-build/">WSO2 WSAS
for Java nightly build distribution</a> and you will find the
sample at WSAS_HOME/samples/FlickrClient or checkout sample from
SVN:
http://wso2.org/repos/wso2/trunk/wsas/java/modules/samples/FlickrClient</p>
<p><strong>See Next Section</strong> - <a href=
"userguide-forfurtherstudy.html">For Further Study</a></p>
</body>
</html>
