<?xml version="1.0" encoding="utf-8"?>
<!--Arbortext, Inc., 1988-2005, v.4002-->
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
 "concept.dtd">
<concept id="axisoverview" xml:lang="en-us">
<title>Creating Web services with the Apache Axis run-time environment</title>
<shortdesc>This run-time environment is for users who prefer to develop for
the open Apache Axis platform. It is for non-production use only. Axis is
the third generation of the Apache SOAP implementation. It evolved from Apache
SOAP to make the SOAP engine more flexible, configurable, and able to handle
both SOAP and the upcoming XML Protocol specification from the W3C open-source
effort.</shortdesc>
<prolog><metadata>
<keywords><indexterm>Axis runtime environment<indexterm>Web services<indexterm>overview</indexterm></indexterm></indexterm>
<indexterm>Web services<indexterm>Axis runtime environment</indexterm></indexterm>
</keywords>
</metadata></prolog>
<conbody>
<section><title>Overview</title><p>Axis is based on JSR 101 <tm tmclass="special"
tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> APIs
for XML based RPC (also known as JAX-RPC).&nbsp; JSR 101 provides a single
interface to any XML-based RPC mechanism, including SOAP.</p><p>Web services
application server uses Axis within a servlet to process the incoming message,
extract information from the message headers, and payloads, as well as conforming
to the particular RPC semantics. </p><p>The level of Axis currently supported
is 1.0. For more information on Axis, refer to  <xref format="html" href="http://xml.apache.org/axis"
scope="external">http://xml.apache.org/axis</xref>. The User's Guide available
on this site provides more in-depth information about using Web services with
Apache Axis. The Reading Guide lists several documents to further your understanding
of Axis.</p><note>The support for Axis is limited to validation that the application
is invoking the Axis emitters correctly. Support for other Axis issues should
be directed to <xref format="html" href="http://ws.apache.org/axis" scope="external">http://ws.apache.org/axis</xref></note></section>
</conbody>
<related-links>
<linklist><title>Related Concepts</title>
<link href="../../org.eclipse.jst.ws.doc.user/concepts/cws.dita" scope="peer">
<linktext>Web services</linktext></link>
<link href="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.dita" scope="peer">
<linktext>Tools for Web services development</linktext></link>
<link href="../../org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.dita" scope="peer">
<linktext>JAX-RPC</linktext></link>
</linklist>
<linklist><title>Related Tasks</title>
<link href="../../org.eclipse.jst.ws.doc.user/tasks/toverws.dita" scope="peer">
<linktext> Developing Web services</linktext></link>
</linklist>
</related-links>
</concept>
