<?xml version="1.0" encoding="utf-8"?>
<!--Arbortext, Inc., 1988-2006, 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 runtime environments</title>
<shortdesc>These runtime environments are for users who prefer to develop
for the open Apache Axis platform. Both Axis1 and Axis2 are supported by the
Web services tools.</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>Apache Axis1 Overview</title><p>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. 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). 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></section>
<section><title>Apache Axis2 Overview</title><p>Axis2 evolved from the Apache
Axis1.x architecture and is more flexible, configurable, and efficient, while
retaining the positive aspects of Apache Axis1.x architecture.</p><p>The Web
service tools provided with this product support the following specifications
when creating Apache Axis2 Web services and clients:<ul>
<li>SOAP 1.1 and 1.2</li>
<li>WSDL 1.1, including both SOAP and HTTP bindings </li>
<li>HTTP transports</li>
</ul>The levels of Axis2 currently supported by the tools is 1.2 and 1.3.
Axis2 can be deployed to any server that supports <tm tmclass="special" tmowner="Sun Microsystems, Inc."
tmtype="tm" trademark="Java">Java</tm> Servlet 2.2 specification or higher,
including <tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg" trademark="IBM">IBM</tm> <tm
tmclass="ibm" tmowner="IBM Corporation" tmtype="reg" trademark="WebSphere">WebSphere</tm> Application
Server 6.1, and Apache Tomcat server. For more information on Axis2, refer
to <xref format="html" href="http://ws.apache.org/axis2/" scope="external">http://ws.apache.org/axis2</xref>. </p><p>The
support for Apache Axis2 is limited to validation that the application is
invoking the Axis2 emitters correctly. Support for other Axis2 issues should
be directed to <xref format="html" href="http://ws.apache.org/axis2/" scope="external">http://ws.apache.org/axis2</xref></p></section>
<section><title>Installing the Apache Axis2 runtime</title><p>Unlike creating
Web services in the Apache Axis1.x runtime, before creating a Web service
using Apache Axis2 you must download the Axis2 runtime and install it the
workbench using the Web services Axis2 preferences page.<ol>
<li>Download Apache Axis2 v1.2 or v1.3 from the following site: <xref format="html"
href="http://ws.apache.org/axis2/download.cgi" scope="external">http://ws.apache.org/axis2/download.cgi</xref>.</li>
<li>Follow the instructions in the appropriate Apache Axis2 installation guide: <ul>
<li>Apache Axis2 v1.2<xref format="html" href="http://ws.apache.org/axis2/1_2/installationguide.html"
scope="external">http://ws.apache.org/axis2/1_2/installationguide.html</xref></li>
<li>Apache Axis2 v1.3<xref format="html" href="http://ws.apache.org/axis2/1_3/installationguide.html"
scope="external">http://ws.apache.org/axis2/1_3/installationguide.html</xref></li>
</ul></li>
<li>Once the Apache Axis2 runtime is installed, you need to associate it with
the workbench. In the workbench, open <menucascade><uicontrol>Window</uicontrol>
<uicontrol>Preferences></uicontrol><uicontrol>Web services</uicontrol><uicontrol>Axis2
Preferences</uicontrol></menucascade>. On the <uicontrol>Axis2 Runtime</uicontrol> tab,
browse to the location where you installed Apache Axis2. A message will display
if the runtime is installed successfully.</li>
</ol></p></section>
<section><title>Creating projects for Axis2 Web services</title><p>The Web
service wizards will automatically add the correct facets to a dynamic Web
project. However if you want to manually create a dynamic Web project enabled
for Axis2 Web service development complete the following:<ol>
<li>Create the service Web project by clicking <uicontrol>File > New > Project
> Dynamic Web project</uicontrol>. Enter the following information: <ol>
<li>Project Name: Type a project name</li>
<li>If you are deploying to a Tomcat server, ensure that <uicontrol>Add project
to an EAR</uicontrol> is not selected. If you do not clear this checkbox you
will be unable to select the Tomcat server. If you are deploying to <tm tmclass="ibm"
tmowner="IBM Corporation" tmtype="reg" trademark="WebSphere">WebSphere</tm> Application
server you will need to add the project to an EAR.</li>
<li>Target runtime: Select the version of the server to which you will deploy
your Web service. If it is not listed, click <uicontrol>New</uicontrol> and
browse to the location where it is installed.</li>
<li>Configurations: Select the default configuration for your server type.</li>
<li>Click <uicontrol>Finish</uicontrol>.</li>
</ol></li>
<li>Add the Axis2 facet. Right-click your project and click <menucascade>
<uicontrol>Properties</uicontrol><uicontrol>Project Facets</uicontrol><uicontrol>Modify
project</uicontrol><uicontrol>Axis2 Web Services</uicontrol></menucascade>,
and click <uicontrol>Finish</uicontrol>.</li>
<li>If you have chosen to deploy to WebSphere Application Server, you must
change the classloading for the EAR from PARENT_FIRST to PARENT_LAST. Expand
the EAR associated with your Axis2 project, and launch its deployment descriptor.
On the <uicontrol>Deployment</uicontrol> tab, expand the <uicontrol>Application</uicontrol> section.
Change the <uicontrol>Classloader mode</uicontrol> field to PARENT_LAST and
save your changes.</li>
</ol></p></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>
