blob: b19010ffecb0df0e0a24eaa7a99537538cab9754 [file] [log] [blame]
<!DOCTYPE html>
<!--
| Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-05-19
| Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="Date-Revision-yyyymmdd" content="20180519" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache Axis2 &#x2013; HTTP servlet transport</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
<link rel="stylesheet" href="../css/site.css" />
<link rel="stylesheet" href="../css/print.css" media="print" />
<script type="text/javascript" src="../js/apache-maven-fluido-1.6.min.js"></script>
</head>
<body class="topBarDisabled">
<div class="container-fluid">
<div id="banner">
<div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png" alt="Apache Axis2"/></a></div>
<div class="pull-right"><a href=".././" id="bannerRight"><img src="../images/axis.jpg" /></a></div>
<div class="clear"><hr/></div>
</div>
<div id="breadcrumbs">
<ul class="breadcrumb">
<li id="publishDate">Last Published: 2018-05-19<span class="divider">|</span>
</li>
<li id="projectVersion">Version: 1.7.8<span class="divider">|</span></li>
<li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
<li class=""><a href="../index.html" title="Axis2/Java">Axis2/Java</a><span class="divider">/</span></li>
<li class="active ">HTTP servlet transport</li>
</ul>
</div>
<div class="row-fluid">
<div id="leftColumn" class="span2">
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">Axis2/Java</li>
<li><a href="../index.html" title="Home"><span class="none"></span>Home</a> </li>
<li><a href="../download.html" title="Downloads"><span class="none"></span>Downloads</a> </li>
<li><a href="javascript:void(0)" title="Release Notes"><span class="icon-chevron-down"></span>Release Notes</a>
<ul class="nav nav-list">
<li><a href="../release-notes/1.6.1.html" title="1.6.1"><span class="none"></span>1.6.1</a> </li>
<li><a href="../release-notes/1.6.2.html" title="1.6.2"><span class="none"></span>1.6.2</a> </li>
<li><a href="../release-notes/1.6.3.html" title="1.6.3"><span class="none"></span>1.6.3</a> </li>
<li><a href="../release-notes/1.6.4.html" title="1.6.4"><span class="none"></span>1.6.4</a> </li>
<li><a href="../release-notes/1.7.0.html" title="1.7.0"><span class="none"></span>1.7.0</a> </li>
<li><a href="../release-notes/1.7.1.html" title="1.7.1"><span class="none"></span>1.7.1</a> </li>
<li><a href="../release-notes/1.7.2.html" title="1.7.2"><span class="none"></span>1.7.2</a> </li>
<li><a href="../release-notes/1.7.3.html" title="1.7.3"><span class="none"></span>1.7.3</a> </li>
<li><a href="../release-notes/1.7.4.html" title="1.7.4"><span class="none"></span>1.7.4</a> </li>
<li><a href="../release-notes/1.7.5.html" title="1.7.5"><span class="none"></span>1.7.5</a> </li>
<li><a href="../release-notes/1.7.6.html" title="1.7.6"><span class="none"></span>1.7.6</a> </li>
<li><a href="../release-notes/1.7.7.html" title="1.7.7"><span class="none"></span>1.7.7</a> </li>
<li><a href="../release-notes/1.7.8.html" title="1.7.8"><span class="none"></span>1.7.8</a> </li>
</ul>
</li>
<li><a href="../modules/index.html" title="Modules"><span class="none"></span>Modules</a> </li>
<li><a href="../tools/index.html" title="Tools"><span class="none"></span>Tools</a> </li>
<li class="nav-header">Documentation</li>
<li><a href="../docs/toc.html" title="Table of Contents"><span class="none"></span>Table of Contents</a> </li>
<li><a href="../docs/installationguide.html" title="Installation Guide"><span class="none"></span>Installation Guide</a> </li>
<li><a href="../docs/quickstartguide.html" title="QuickStart Guide"><span class="none"></span>QuickStart Guide</a> </li>
<li><a href="../docs/userguide.html" title="User Guide"><span class="none"></span>User Guide</a> </li>
<li><a href="../docs/jaxws-guide.html" title="JAXWS Guide"><span class="none"></span>JAXWS Guide</a> </li>
<li><a href="../docs/pojoguide.html" title="POJO Guide"><span class="none"></span>POJO Guide</a> </li>
<li><a href="../docs/spring.html" title="Spring Guide"><span class="none"></span>Spring Guide</a> </li>
<li><a href="../docs/webadminguide.html" title="Web Administrator's Guide"><span class="none"></span>Web Administrator's Guide</a> </li>
<li><a href="../docs/migration.html" title="Migration Guide (from Axis1)"><span class="none"></span>Migration Guide (from Axis1)</a> </li>
<li class="nav-header">Resources</li>
<li><a href="../faq.html" title="FAQ"><span class="none"></span>FAQ</a> </li>
<li><a href="../articles.html" title="Articles"><span class="none"></span>Articles</a> </li>
<li><a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki"><span class="none"></span>Wiki</a> </li>
<li><a href="../refLib.html" title="Reference Library"><span class="none"></span>Reference Library</a> </li>
<li><a href="../apidocs/index.html" title="Online Java Docs"><span class="none"></span>Online Java Docs</a> </li>
<li class="nav-header">Get Involved</li>
<li><a href="../overview.html" title="Overview"><span class="none"></span>Overview</a> </li>
<li><a href="../svn.html" title="Checkout the Source"><span class="none"></span>Checkout the Source</a> </li>
<li><a href="../mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a> </li>
<li><a href="../release-process.html" title="Release Process"><span class="none"></span>Release Process</a> </li>
<li><a href="../guidelines.html" title="Developer Guidelines"><span class="none"></span>Developer Guidelines</a> </li>
<li><a href="../siteHowTo.html" title="Build the Site"><span class="none"></span>Build the Site</a> </li>
<li class="nav-header">Project Information</li>
<li><a href="../team-list.html" title="Project Team"><span class="none"></span>Project Team</a> </li>
<li><a href="../issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a> </li>
<li><a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code"><span class="none"></span>Source Code</a> </li>
<li><a href="../thanks.html" title="Acknowledgements"><span class="none"></span>Acknowledgements</a> </li>
<li class="nav-header">Apache</li>
<li><a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License"><span class="none"></span>License</a> </li>
<li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a> </li>
<li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a> </li>
<li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a> </li>
</ul>
<hr />
<div id="poweredBy">
<div class="clear"></div>
<div class="clear"></div>
<div class="clear"></div>
<div class="clear"></div>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
</div>
</div>
</div>
<div id="bodyColumn" class="span10" >
<h1>HTTP servlet transport</h1>
<div class="section">
<h2><a name="Introduction"></a>Introduction</h2>
<p>
The servlet transport processes HTTP requests received through the servlet
container in which Axis2 is deployed. It is different from the other transports
because its lifecycle is not managed by Axis2, but by the servlet container.
Two things are necessary to enable and configure the servlet transport:
</p>
<ul>
<li>
<tt>org.apache.axis2.transport.http.AxisServlet</tt> must be registered
and mapped as a servlet in <tt>web.xml</tt>.
</li>
<li>
One or more <tt>org.apache.axis2.transport.http.AxisServletListener</tt>
instances must be declared as transport receivers in <tt>axis2.xml</tt>.
</li>
</ul>
<p>
It should be noted that the role of <tt>AxisServlet</tt> is not limited to that
of an Axis2 transport, but that it provides two additional features:
</p>
<ul>
<li>
It starts the Axis2 runtime and sets it up to load the <tt>axis2.xml</tt>
configuration as well as the repository from the Web application.
</li>
<li>
It exposes the WSDL documents of deployed services. The WSDL of a service can be
accessed by appending <tt>?wsdl</tt> to the EPR of the service.
</li>
</ul>
</div>
<div class="section">
<h2><a name="Adding_AxisServlet_to_web.xml"></a>Adding AxisServlet to web.xml</h2>
<p>
<tt>AxisServlet</tt> is typically configured as follows in <tt>web.xml</tt>:
</p>
<div>
<pre>
&lt;servlet&gt;
&lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;
&lt;display-name&gt;Apache-Axis Servlet&lt;/display-name&gt;
&lt;servlet-class&gt;org.apache.axis2.transport.http.AxisServlet&lt;/servlet-class&gt;
&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;
&lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
</pre></div>
<p>
Note that the prefix used in <tt>url-pattern</tt> must match the
<tt>servicePath</tt> parameter in <tt>axis2.xml</tt>. The default
value of this parameter is <tt>services</tt>, which is compatible
with the above configuration.
</p>
</div>
<div class="section">
<h2><a name="Configuring_axis2.xml"></a>Configuring axis2.xml</h2>
<p>
For each protocol (HTTP and/or HTTPS), an <tt>AxisServletListener</tt>
instance must be declared in <tt>axis2.xml</tt>. If only a single
protocol is used, no further configuration is required. For example,
if only HTTP is used, the following declaration must be present in
<tt>axis2.xml</tt>:
</p>
<div>
<pre>
&lt;transportReceiver name=&quot;http&quot; class=&quot;org.apache.axis2.transport.http.AxisServletListener&quot;/&gt;
</pre></div>
<p>
If both HTTP and HTTPS are used, then things become a bit more complicated.
The reason is that in order to expose WSDLs with correct endpoint URIs,
<tt>AxisServlet</tt> must know the ports used by HTTP and HTTPS.
Unfortunately the servlet API doesn't allow a Web application to discover
all configured protocols. It only provides information about the protocol,
host name and port for the current request. If only a single
<tt>AxisServletListener</tt> is configured, then this information is enough
to let <tt>AxisServlet</tt> auto-detect the port number. If both HTTP
and HTTPS are used (or if WSDLs are retrieved through transports other than
<tt>AxisServlet</tt>), then <tt>AxisServlet</tt> has no way of knowing the
port numbers until it has processed at least one request
for each protocol. To make WSDL generation predictable in this scenario, it
is necessary to explicitly configure the port numbers in <tt>axis2.xml</tt>,
such as in the following example:
</p>
<div>
<pre>
&lt;transportReceiver name=&quot;http&quot; class=&quot;org.apache.axis2.transport.http.AxisServletListener&quot;&gt;
&lt;parameter name=&quot;port&quot;&gt;8080&lt;/parameter&gt;
&lt;/transportReceiver&gt;
&lt;transportReceiver name=&quot;https&quot; class=&quot;org.apache.axis2.transport.http.AxisServletListener&quot;&gt;
&lt;parameter name=&quot;port&quot;&gt;8443&lt;/parameter&gt;
&lt;/transportReceiver&gt;
</pre></div>
</div>
</div>
</div>
</div>
<hr/>
<footer>
<div class="container-fluid">
<div class="row-fluid">
<p>Copyright &copy;2004&#x2013;2018
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
</div>
</div>
</footer>
</body>
</html>