<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at May 28, 2013
 | 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="20130528" />
    <meta http-equiv="Content-Language" content="en" />
    <title>JMS Transport - 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>JMS Transport</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="JMS Transport">
        JMS Transport</a>
        </li>
      <li class="divider ">/</li>
        <li class="">Project Summary</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2013-05-28</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>Project Summary<a name="Project_Summary"></a></h2><a name="Project_Summary"></a><div class="section"><h3>Project Information<a name="Project_Information"></a></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>JMS Transport</td></tr><tr class="a"><td>Description</td><td>Contains the Axis JMS transport.</td></tr><tr class="b"><td>Homepage</td><td><a class="externalLink" href="http://axis.apache.org/axis/java/transports/jms">http://axis.apache.org/axis/java/transports/jms</a></td></tr></table></div><div class="section"><h3>Project Organization<a name="Project_Organization"></a></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>Build Information<a name="Build_Information"></a></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-rt-transport-jms</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>JDK Rev</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-2013
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

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