<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">











<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Axis2 Transports - Project Summary</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      </head>
  <body class="composite">
    <div id="banner">
                  <a href="../transports" id="bannerLeft">
    
            
    
            </a>
                        <a href="http://www.apache.org" id="bannerRight">
    
                                            <img src="images/asfLogo.jpg" alt="" />
    
            </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
    
            <div class="xleft">
        Last Published: 07 Dec 2009
                      </div>
            <div class="xright">            <a href="http://www.apache.org/" class="externalLink">Apache</a>
            |
                <a href="../../">WebServices</a>
            |
                <a href="../">Commons</a>
            |
                <a href="../../axis2/">Axis2</a>
            |
                <a href="http://synapse.apache.org/" class="externalLink">Synapse</a>
            
  

  
    
  
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
    
                   <h5>Axis2 Transports</h5>
            <ul>
              
    <li class="none">
                    <a href="index.html">About</a>
          </li>
              
          
              
      
            
      
              
        <li class="expanded">
                    <a href="download_index.html">Downloads</a>
                  <ul>
                  
    <li class="none">
                    <a href="download.cgi">Releases</a>
          </li>
                  
    <li class="none">
                    <a href="source-repository.html">Source Code</a>
          </li>
              </ul>
        </li>
              
          
              
      
            
      
            
      
            
      
            
      
              
        <li class="expanded">
                    <a href="docs_index.html">Documentation</a>
                  <ul>
                  
    <li class="none">
                    <a href="jms.html">JMS Transport</a>
          </li>
                  
    <li class="none">
                    <a href="mail.html">Mail Transport</a>
          </li>
                  
    <li class="none">
                    <a href="tcp-transport.html">TCP Transport</a>
          </li>
                  
    <li class="none">
                    <a href="sms.html">SMS Transport</a>
          </li>
                  
    <li class="none">
                    <a href="apidocs/index.html">Java Doc</a>
          </li>
              </ul>
        </li>
              
          
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
            
              
            <li class="expanded">
                    <a href="project-info.html">Project Information</a>
                  <ul>
                  
    <li class="none">
                    <a href="mail-lists.html">Mailing Lists</a>
          </li>
                  
    <li class="none">
                    <a href="building.html">Building</a>
          </li>
                  
    <li class="none">
                    <a href="issue-tracking.html">Issue Tracking</a>
          </li>
                  
    <li class="none">
                    <a href="dependencies.html">Dependencies</a>
          </li>
                  
    <li class="none">
                    <a href="dependency-convergence.html">Dependency Convergence</a>
          </li>
                  
    <li class="none">
                    <a href="dependency-management.html">Dependency Management</a>
          </li>
                  
    <li class="none">
                    <a href="plugins.html">Plugins</a>
          </li>
                  
    <li class="none">
                    <a href="plugin-management.html">Plugin Management</a>
          </li>
                  
    <li class="none">
                    <a href="team-list.html">Project Team</a>
          </li>
                  
    <li class="none">
              <strong>Project Summary</strong>
        </li>
              </ul>
        </li>
          </ul>
                                           <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
          </a>
                       
  

  
    
  
  
    
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>Project Summary</h2>
<div class="section"><h3>Project Information</h3>
<table class="bodyTable"><tr class="a"><th>Field</th>
<th>Value</th>
</tr>
<tr class="b"><td>Name</td>
<td>Apache Axis2 - Transport - Root</td>
</tr>
<tr class="a"><td>Description</td>
<td>Axis2 Transports are a set of transport adaptors for the Apache Axis2 project 
        as well as for the Apache Synapse project. These transports consists of a set of
        synchronous as well as completely asynchronous transport adaprots.</td>
</tr>
<tr class="b"><td>Homepage</td>
<td><a href="http://ws.apache.org/commons/transport/" class="externalLink">http://ws.apache.org/commons/transport/</a></td>
</tr>
</table>
</div>
<div class="section"><h3>Project Organization</h3>
<table class="bodyTable"><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 href="http://www.apache.org/" class="externalLink">http://www.apache.org/</a></td>
</tr>
</table>
</div>
<div class="section"><h3>Build Information</h3>
<table class="bodyTable"><tr class="b"><th>Field</th>
<th>Value</th>
</tr>
<tr class="a"><td>GroupId</td>
<td>org.apache.axis2</td>
</tr>
<tr class="b"><td>ArtifactId</td>
<td>axis2-transports</td>
</tr>
<tr class="a"><td>Version</td>
<td>1.0.0</td>
</tr>
<tr class="b"><td>Type</td>
<td>pom</td>
</tr>
</table>
</div>
</div>

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2004-2009
    
          The Apache Software Foundation
          
  

  
    
  
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
