<?xml version="1.0" encoding=""?> | |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | |
<head> | |
<meta http-equiv="content-type" content="" /> | |
<title>Apache Axis2 User's Guide- Introducing Axis2</title> | |
<link href="../css/axis-docs.css" rel="stylesheet" type="text/css" | |
media="all" /> | |
</head> | |
<body 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"></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="http://ws.apache.org/axis2/download.cgi">download</a>.</p> | |
<h2>Content</h2> | |
<ul> | |
<li><a href="userguide.html#intro"><strong>Introducing | |
Axis2</strong></a><br /> | |
<ul> | |
<li><a href="userguide.html#whatis"><strong>What is | |
Axis2?</strong></a></li> | |
<li><a href="userguide.html#underhood"><strong>What's under the | |
hood?</strong></a></li> | |
<li><a href="userguide.html#handlessoap"><strong>How Axis2 handles SOAP | |
messages</strong></a></li> | |
<li><a href="userguide.html#distributions"><strong>Axis2 | |
Distributions</strong></a></li> | |
<li><a href="userguide.html#sbd"><strong>The Axis2 Standard Binary | |
Distribution</strong></a></li> | |
<li><a href="userguide.html#hierarchy"><strong>Axis2.war Directory | |
Hierarchy</strong></a></li> | |
<li><a href="userguide.html#docs"><strong>Axis2 Documents | |
Distribution</strong></a></li> | |
<li><a href="userguide.html#clients"><strong>Axis2 and | |
Clients</strong></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"></a> | |
<h2>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 | |
href="http://www.oasis-open.org/committees/download.php/16790/wss-v1.1-spec-os-SOAPMessageSecurity.pdf">WS-Security</a>, | |
<a | |
href="http://xml.coverpages.org/ws-reliablemessaging20030313.pdf">WS-ReliableMessaging</a>, | |
<a href="http://www.w3.org/2002/ws/addr/">WS-Addressing</a>, <a | |
href="http://dev2dev.bea.com/pub/a/2004/03/ws-coordination.html">WS-Coordination</a>, | |
and <a | |
href="ftp://www6.software.ibm.com/software/developer/library/WS-AtomicTransaction.pdf">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"></a> | |
<h2>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 alt="Lifecycle of a Web services message" src="images/fig01.jpg" | |
/><br clear="all" /> | |
</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 "<a | |
href="userguide-introtoservices.html/">Introduction to Services</a>".) 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"></a> | |
<h2>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 alt="Axis2 handles SOAP messages" src="images/fig02.jpg" /><br | |
clear="all" /> | |
</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 | |
<em>can</em> 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 "handlers" 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 "pre-dispatch" 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 "phases", with several | |
pre-defined phases, such as the "pre-dispatch", "dispatch," and "message | |
processing", being built into Axis2. Each phase is a collection of | |
"handlers". 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 "modules" that can be plugged into a running Axis2 | |
system. These modules, such as Rampart, which provides an implementation of | |
WS-Security, and Sandesha, which provides an implementation of | |
WS-ReliableMessaging, are the main extensibility mechanisms in Axis2.</p> | |
<a name="distributions"></a> | |
<h2>Axis2 Distributions</h2> | |
<p>Axis2 is released in several <a | |
href="http://ws.apache.org/axis2/download/@axis2_version_dir@/download.cgi">distributions</a>. | |
Which one you need depends on what you'll be doing with it.</p> | |
<a name="sbd"></a> | |
<h3>The Axis2 Standard Binary Distribution</h3> | |
<p>If you're developing services and applications, you'll need the Axis2 <a | |
href="http://ws.apache.org/axis2/download/@axis2_version_dir@/download.cgi#std-bin">Standard | |
Binary Distribution</a>. 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> | |
<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> | |
<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"></a> | |
<h2>axis2.war Distribution Directory Hierarchy</h2> | |
<p>axis2.war is available in <a | |
href="http://ws.apache.org/axis2/download/@axis2_version_dir@/download.cgi#war">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> | |
<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> | |
<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="http://ws.apache.org/axis2/download/@axis2_version_dir@/download.cgi#src">source | |
distribution</a>, which enables you to generate this .war file yourself.</p> | |
<a id="docs"></a> | |
<h2>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> | |
<pre>docs | |
javadocs | |
xdocs | |
LICENSE.txt | |
README.txt | |
release-notes.html</pre> | |
<p>The javadocs directory includes all the standard <a | |
href="../../javadocs/index.html">API documentation</a> for the Axis2 API, | |
with other documentation (like this document) in the xdocs directory.</p> | |
<a name="clients"></a> | |
<h2>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><strong>See Next Section</strong> - <a | |
href="userguide-installingtesting.html#installingtesting">Installing and | |
Testing Client Code</a></p> | |
</body> | |
</html> |