<?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>
<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>
