<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2015-07-03
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<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="20150703" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Stand-alone Server &#x2013; Project Summary</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.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.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>Stand-alone Server</h2>
                </div>
                      </div>
        <div class="pull-right">                                <a href=".." id="bannerRight">
                                                                                                <img src="../images/axis-small.png"  alt="Apache Axis"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../../" title="Axis">
        Axis</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../" title="Axis 1.x">
        Axis 1.x</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../" title="Java">
        Java</a>
        </li>
      <li class="divider ">/</li>
                <li class="">
                    <a href="./" title="Stand-alone Server">
        Stand-alone Server</a>
        </li>
      <li class="divider ">/</li>
        <li class="">Project Summary</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2015-07-03</li> <li class="divider pull-right">|</li>
              <li id="projectVersion" class="pull-right">Version: 1.4.1-SNAPSHOT</li>
            
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Project Documentation</li>
                                                                                                                                
      <li>
    
                          <a href="project-info.html" title="Project Information">
          <i class="icon-chevron-down"></i>
        Project Information</a>
                    <ul class="nav nav-list">
                      
      <li>
    
                          <a href="index.html" title="About">
          <i class="none"></i>
        About</a>
            </li>
                      
      <li class="active">
    
            <a href="#"><i class="none"></i>Project Summary</a>
          </li>
                      
      <li>
    
                          <a href="dependencies.html" title="Dependencies">
          <i class="none"></i>
        Dependencies</a>
            </li>
              </ul>
        </li>
                              <li class="nav-header">Apache</li>
                                
      <li>
    
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">
          <i class="none"></i>
        License</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
          <i class="none"></i>
        Sponsorship</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">
          <i class="none"></i>
        Security</a>
            </li>
            </ul>
                
                    
                            <form id="search-form" action="http://www.google.com/search" method="get" >
    
  <input value="ws.apache.org/axis/java" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
          <hr class="divider" />

           <div id="poweredBy">
                            <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="span9" >
                                  
            <div class="section">
<h2><a name="Project_Summary"></a>Project Summary</h2><a name="Project_Summary"></a>
<div class="section">
<h3><a name="Project_Information"></a>Project Information</h3><a name="Project_Information"></a>
<table border="0" class="table table-striped">
<tr class="a">
<th>Field</th>
<th>Value</th></tr>
<tr class="b">
<td>Name</td>
<td>Stand-alone Server</td></tr>
<tr class="a">
<td>Description</td>
<td>A Jetty based stand-alone Axis server that replaces the former SimpleAxisServer.</td></tr>
<tr class="b">
<td>Homepage</td>
<td><a class="externalLink" href="http://axis.apache.org/axis/java/standalone-server">http://axis.apache.org/axis/java/standalone-server</a></td></tr></table></div>
<div class="section">
<h3><a name="Project_Organization"></a>Project Organization</h3><a name="Project_Organization"></a>
<table border="0" class="table table-striped">
<tr class="a">
<th>Field</th>
<th>Value</th></tr>
<tr class="b">
<td>Name</td>
<td>The Apache Software Foundation</td></tr>
<tr class="a">
<td>URL</td>
<td><a class="externalLink" href="http://www.apache.org/">http://www.apache.org/</a></td></tr></table></div>
<div class="section">
<h3><a name="Build_Information"></a>Build Information</h3><a name="Build_Information"></a>
<table border="0" class="table table-striped">
<tr class="a">
<th>Field</th>
<th>Value</th></tr>
<tr class="b">
<td>GroupId</td>
<td>org.apache.axis</td></tr>
<tr class="a">
<td>ArtifactId</td>
<td>axis-standalone-server</td></tr>
<tr class="b">
<td>Version</td>
<td>1.4.1-SNAPSHOT</td></tr>
<tr class="a">
<td>Type</td>
<td>jar</td></tr>
<tr class="b">
<td>Java Version</td>
<td>1.4</td></tr></table></div></div>
                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2000-2015
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>