<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">










<html>
  <head>
    <title>James Server - Project License</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="http://james.apache.org/index.html" id="bannerLeft">
    
                                            <img src="images/james-server-logo.gif" alt="" />
    
            </a>
                        <a href="http://www.apache.org/index.html" id="bannerRight">
    
                                            <img src="images/asf-logo-reduced.gif" alt="" />
    
            </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
            <div class="xleft">
        Last Published: 02/28/2009
                      </div>
            <div class="xright">      <a href="http://james.apache.org/index.html">JAMES Project</a>
          |
          <a href="http://james.apache.org/server/index.html">Server</a>
          |
          <a href="http://james.apache.org/mailet/index.html">Mailets</a>
          |
          <a href="http://james.apache.org/jspf/index.html">jSPF</a>
          |
          <a href="http://james.apache.org/mime4j/index.html">Mime4J</a>
          |
          <a href="http://james.apache.org/jsieve/index.html">JSieve</a>
          |
          <a href="http://james.apache.org/postage/index.html">Postage</a>
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
                   <h5>James Server</h5>
        <ul>
              
    <li class="none">
              <a href="../../../../../people.apache.org/www/james.apache.org/server/index.html">Overview</a>
        </li>
              
    <li class="none">
              <a href="../../../../../people.apache.org/www/james.apache.org/server/design_objectives.html">Objectives</a>
        </li>
              
          
              
      
              
        <li class="expanded">
              <a href="../../../../../people.apache.org/www/james.apache.org/server/FAQ.html">James FAQ</a>
                <ul>
                  
    <li class="none">
              <a href="../../../../../people.apache.org/www/james.apache.org/server/james_and_sendmail.html">James and Sendmail</a>
        </li>
              </ul>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/james">Wiki</a>
        </li>
              
    <li class="none">
              <a href="../../../../../people.apache.org/www/james.apache.org/server/rfclist.html">Useful RFCs</a>
        </li>
          </ul>
          <h5>Concepts</h5>
        <ul>
              
    <li class="none">
              <a href="summary.html">Summary</a>
        </li>
              
    <li class="none">
              <a href="spoolmanager.html">SpoolManager</a>
        </li>
              
    <li class="none">
              <a href="repositories.html">Repositories</a>
        </li>
              
    <li class="none">
              <a href="mailet_api.html">The Mailet API</a>
        </li>
          </ul>
          <h5>How to...</h5>
        <ul>
              
    <li class="none">
              <a href="build_instructions.html">Build James</a>
        </li>
              
    <li class="none">
              <a href="installation_instructions.html">Install James</a>
        </li>
          </ul>
          <h5>Mailets</h5>
        <ul>
              
    <li class="none">
              <a href="http://james.apache.org/mailet/index.html">Overview</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mailet/api/index.html">API</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mailet/base/index.html">Basic Toolkit</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mailet/crypto/index.html">Crypto</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mailet/standard/index.html">Sieve</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mailet/maven-mailetdocs-plugin/index.html">MailetDocs</a>
        </li>
              
    <li class="none">
              <a href="james-server-mailets-function/mailet-report.html">Server</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/mailet/standard/index.html">Standard</a>
        </li>
          </ul>
          <h5>Configuration</h5>
        <ul>
              
    <li class="none">
              <a href="dns_configuration.html">DNS Server</a>
        </li>
              
    <li class="none">
              <a href="pop3_configuration.html">POP3 Server</a>
        </li>
              
    <li class="none">
              <a href="smtp_configuration.html">SMTP Server</a>
        </li>
              
    <li class="none">
              <a href="nntp_configuration.html">NNTP Server</a>
        </li>
              
    <li class="none">
              <a href="fetchmail_configuration.html">FetchMail</a>
        </li>
              
    <li class="none">
              <a href="remotemanager_configuration.html">RemoteManager</a>
        </li>
              
    <li class="none">
              <a href="spoolmanager_configuration.html">SpoolManager</a>
        </li>
              
    <li class="none">
              <a href="serverwide_configuration.html">Server-wide</a>
        </li>
              
    <li class="none">
              <a href="adding_users.html">Adding Users</a>
        </li>
              
    <li class="none">
              <a href="provided_matchers.html">Provided Matchers</a>
        </li>
              
    <li class="none">
              <a href="provided_mailets.html">Provided Mailets</a>
        </li>
          </ul>
          <h5>Common Configurations</h5>
        <ul>
              
    <li class="none">
              <a href="smtp_auth.html">Using SMTP AUTH</a>
        </li>
              
    <li class="none">
              <a href="using_database.html">Using a Database with James</a>
        </li>
              
    <li class="none">
              <a href="usingTLS.html">Using TLS/SSL</a>
        </li>
              
    <li class="none">
              <a href="mailing_lists.html">Creating Mailing Lists</a>
        </li>
          </ul>
          <h5>Customization</h5>
        <ul>
              
    <li class="none">
              <a href="custom_matcher.html">How to write a custom Matcher</a>
        </li>
              
    <li class="none">
              <a href="custom_mailet.html">How to write a custom Mailet</a>
        </li>
          </ul>
          <h5>Project</h5>
        <ul>
              
    <li class="none">
              <a href="jira-report.html">Changes</a>
        </li>
              
    <li class="none">
              <a href="changelog.html">Release Notes</a>
        </li>
          </ul>
          <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
            
            
      
            
      
            
      
            
      
              
            <li class="expanded">
              <a href="project-info.html">Project Information</a>
                <ul>
                  
    <li class="none">
              <a href="index.html">About</a>
        </li>
                  
    <li class="none">
              <a href="integration.html">Continuous Integration</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="issue-tracking.html">Issue Tracking</a>
        </li>
                  
    <li class="none">
              <a href="mail-lists.html">Mailing Lists</a>
        </li>
                  
    <li class="none">
              <a href="plugin-management.html">Plugin Management</a>
        </li>
                  
    <li class="none">
              <strong>Project License</strong>
        </li>
                  
    <li class="none">
              <a href="plugins.html">Project Plugins</a>
        </li>
                  
    <li class="none">
              <a href="project-summary.html">Project Summary</a>
        </li>
                  
    <li class="none">
              <a href="team-list.html">Project Team</a>
        </li>
                  
    <li class="none">
              <a href="source-repository.html">Source Repository</a>
        </li>
              </ul>
        </li>
              
                
              
      
            
      
              
        <li class="collapsed">
              <a href="project-reports.html">Project Reports</a>
              </li>
          </ul>
          <h5>Project</h5>
        <ul>
              
    <li class="none">
              <a href="http://issues.apache.org/jira/browse/JAMES">Bug Database</a>
        </li>
              
    <li class="none">
              <a href="http://svn.apache.org/viewvc/james/server/">Source Code</a>
        </li>
              
    <li class="none">
              <a href="../../../../../people.apache.org/www/james.apache.org/server/todo.html">TODO</a>
        </li>
          </ul>
          <h5>Downloads</h5>
        <ul>
              
    <li class="none">
              <a href="http://james.apache.org/download.cgi">Stable releases</a>
        </li>
              
    <li class="none">
              <a href="http://james.apache.org/downloadunstable.cgi">Unstable releases</a>
        </li>
              
    <li class="none">
              <a href="http://people.apache.org/builds/james/nightly/">Nightly builds</a>
        </li>
          </ul>
                                       <a href="http://maven.apache.org/" title="Built by Maven" id="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>Overview</h2><p>Typically the licenses listed for the project are that of the project itself, and not of dependencies.</p></div><div class="section"><h2>Project License</h2><div class="section"><h3>Apache License, Version 2.0</h3><a href="http://www.apache.org/licenses/LICENSE-2.0.html">[Original text]</a><p>Copy of the license follows.</p>
    <div class="navigation">
        <ul>
            <li><a href="http://www.apache.org/licenses/../" title="Foundation Home">Home</a></li>
            <li><a href="http://www.apache.org/licenses/../foundation" title="About the Foundation">Foundation</a></li>
            <li><a href="http://projects.apache.org" title="Apache Projects">Projects</a></li>
            <li><a href="http://people.apache.org" title="Apache People">People</a></li>
            <li><a href="http://www.apache.org/licenses/../foundation/getinvolved.html" title="Get involved in Apache">Get Involved</a></li>
            <li><a href="http://www.apache.org/licenses/../foundation/sponsorship.html" title="Support the mission of Apache">Support Apache</a></li>           
            <li class="dlink"><a href="http://www.apache.org/licenses/../dyn/closer.cgi" title="Download Apache projects">Download</a></li>
        </ul>
    </div>
    <div class="container">
    <hr class="space col"/>
    <div class="block">
        <div class="column span-24">
      <div id="header">
                          <!-- Add 'default' header section here. -->
                                <h1>Apache License, Version 2.0</h1>
                         </div>
      </div>
    </div>
    <hr/>
    <div class="block">
            <div class="column span-8 prepend-16 search searchsub">
                <form action="http://www.google.com/search" method="get">
                 <input value="*.apache.org" name="sitesearch" type="hidden"/>
                 <input size="10" name="q" id="query" type="text"/>
                 <input name="Search" value="Go" type="submit"/>
           </form>
        </div>
    </div>
    <div class="block content">
        <div class="column span-15 colborder">
                            
<div class="section-content">
<p align="center">
Apache License<br />
Version 2.0, January 2004<br />
<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a>
</p>
<p>
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
</p>
<p><b><a name="definitions">1. Definitions</a></b>.</p>
<p>
      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.
</p>
<p>
      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.
</p>
<p>
      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.
</p>
<p>
      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.
</p>
<p>
      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.
</p>
<p>
      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.
</p>
<p>
      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).
</p>
<p>
      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.
</p>
<p>
      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."
</p>
<p>
      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.
</p>
<p><b><a name="copyright">2. Grant of Copyright License</a></b>.
Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.
</p>
<p><b><a name="patent">3. Grant of Patent License</a></b>.
Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.
</p>
<p><b><a name="redistribution">4. Redistribution</a></b>.
You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:
<ol type="a">
<li>You must give any other recipients of the Work or
          Derivative Works a copy of this License; and
<br /> <br /></li>

<li>You must cause any modified files to carry prominent notices
          stating that You changed the files; and
<br /> <br /></li>

<li>You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and
<br /> <br /></li>

<li>If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.</li>
</ol>
      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.
</p>
<p><b><a name="contributions">5. Submission of Contributions</a></b>.
Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.
</p>
<p><b><a name="trademarks">6. Trademarks</a></b>.
This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.
</p>
<p><b><a name="no-warranty">7. Disclaimer of Warranty</a></b>.
Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.
</p>
<p><b><a name="no-liability">8. Limitation of Liability</a></b>.
In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.
</p>
<p><b><a name="additional">9. Accepting Warranty or Additional Liability</a></b>.
While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.
</p>
<p>
END OF TERMS AND CONDITIONS
</p>
</div>
                 
<h4 id="apply">
   APPENDIX: How to apply the Apache License to your work
</h4>
<div class="section-content">
<p>
      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.
</p>
<div class="source"><code>
   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
</code>
</div>
</div>
         </div>
    <div class="column span-8 last">
      <div class="block">
        <div class="nav column span-11">
          <div>
               <div class="menuheader"><a 
href="http://projects.apache.org/">Apache Projects</a></div> 
  <ul>
          <li><a href="http://httpd.apache.org/" title="Apache Web Server (httpd)">HTTP Server</a></li> 
          <li><a href="http://abdera.apache.org/" title="Atom Publishing Protocol Implementation">Abdera</a></li> 
          <li><a href="http://activemq.apache.org/" title="Distributed Messaging System">ActiveMQ</a></li> 
          <li><a href="http://ant.apache.org/" title="Java-based build tool">Ant</a></li> 
          <li><a href="http://apr.apache.org/" title="Apache Portable Runtime libraries">APR</a></li> 
          <li><a href="http://archiva.apache.org/" title="Build Artifact Repository Manager">Archiva</a></li> 
          <li><a href="http://beehive.apache.org/" title="Metadata frameworks for enterprise applications">Beehive</a></li> 
          <li><a href="http://camel.apache.org/" title="Spring based Integration Framework which implements the Enterprise Integration Patterns">Camel</a></li> 
          <li><a href="http://cayenne.apache.org/" title="User-friendly Java ORM with Tools">Cayenne</a></li> 
          <li><a href="http://cocoon.apache.org/" title="Web development framework: separation of concerns, component-based">Cocoon</a></li> 
          <li><a href="http://commons.apache.org/" title="Reusable Java components">Commons</a></li> 
          <li><a href="http://continuum.apache.org/" title="Continuous Integration and Build Server">Continuum</a></li> 
          <li><a href="http://couchdb.apache.org/" title="RESTful document database">CouchDB</a></li> 
          <li><a href="http://cxf.apache.org/" title="Service Framework">CXF</a></li> 
          <li><a href="http://db.apache.org/" title="Database access">DB</a></li> 
          <li><a href="http://directory.apache.org/" title="Apache Directory Server">Directory</a></li> 
          <li><a href="http://excalibur.apache.org/" title="Embeddable software libraries related to component and service management access">Excalibur</a></li> 
          <li><a href="http://felix.apache.org/" title="OSGi Framework and components.">Felix</a></li> 
          <li><a href="http://forrest.apache.org/" title="Aggregated multi-channel documentation, separation of concerns">Forrest</a></li> 
          <li><a href="http://geronimo.apache.org/" title="Java2, Enterprise Edition (J2EE) container">Geronimo</a></li> 
          <li><a href="http://gump.apache.org/" title="Continuous integration of open source projects">Gump</a></li> 
          <li><a href="http://hadoop.apache.org/" title="Distributed computing platform">Hadoop</a></li> 
          <li><a href="http://harmony.apache.org/" title="Open source implementation of Java SE">Harmony</a></li> 
          <li><a href="http://hivemind.apache.org/" title="A services and configuration microkernel">HiveMind</a></li> 
          <li><a href="http://hc.apache.org/" title="Java toolset of low level HTTP components">HttpComponents</a></li> 
          <li><a href="http://ibatis.apache.org/" title="SQL Data Mapper for Java and .NET">iBATIS</a></li> 
          <li><a href="http://incubator.apache.org/" title="Shepherd for new projects">Incubator</a></li> 
          <li><a href="http://jackrabbit.apache.org/" title="Content Repository for Java">Jackrabbit</a></li> 
          <li><a href="http://jakarta.apache.org/" title="Server-side Java">Jakarta</a></li> 
          <li><a href="http://james.apache.org/" title="Java Apache Mail Enterprise Server">James</a></li> 
          <li><a href="http://labs.apache.org/" title="The Innovation Laboratories of the Apache Software Foundation">Labs</a></li> 
          <li><a href="http://lenya.apache.org/" title="Content Management System">Lenya</a></li> 
          <li><a href="http://logging.apache.org/" title="Cross-language logging services">Logging</a></li> 
          <li><a href="http://lucene.apache.org/" title="Search engine library">Lucene</a></li> 
          <li><a href="http://maven.apache.org/" title="Java project management and comprehension tools">Maven</a></li> 
          <li><a href="http://mina.apache.org/" title="Multipurpose Infrastructure for Network Application">Mina</a></li> 
          <li><a href="http://myfaces.apache.org/" title="JavaServer(tm) Faces implementation and components">MyFaces</a></li> 
          <li><a href="http://ode.apache.org/" title="Orchestration Director Engine: Business Process Management (BPM), Process Orchestration and Workflow through service compositioni.">ODE</a></li> 
          <li><a href="http://ofbiz.apache.org/" title="Open for Business: enterprise automation software">OFBiz</a></li> 
          <li><a href="http://openejb.apache.org/" title="OpenEJB: a modular, configurable, and extendable EJB Container System and Server">OpenEJB</a></li> 
          <li><a href="http://openjpa.apache.org/" title="OpenJPA: Object Relational Mapping for Java">OpenJPA</a></li> 
          <li><a href="http://perl.apache.org/" title="Dynamic websites using Perl">Perl</a></li> 
          <li><a href="http://poi.apache.org/" title="Java API for OLE 2 Compound Documents">POI</a></li> 
          <li><a href="http://portals.apache.org/" title="Portal technology">Portals</a></li> 
          <li><a href="http://qpid.apache.org/" title="Multiple language implementation of the latest Advanced Message Queuing Protocol (AMQP)">Qpid</a></li> 
          <li><a href="http://roller.apache.org/" title="Java blog server">Roller</a></li> 
          <li><a href="http://santuario.apache.org/" title="XML Security in Java and C++">Santuario</a></li> 
          <li><a href="http://servicemix.apache.org/" title="Enterprise Service Bus">ServiceMix</a></li> 
          <li><a href="http://shale.apache.org/" title="Web application framework based on JavaServer(tm) Faces">Shale</a></li> 
          <li><a href="http://spamassassin.apache.org/" title="Mail filter to identify spam">SpamAssassin</a></li> 
          <li><a href="http://stdcxx.apache.org/" title="Apache C++ Standard Library">STDCXX</a></li> 
          <li><a href="http://struts.apache.org/" title="Model 2 framework for building Java web applications">Struts</a></li> 
          <li><a href="http://synapse.apache.org/" title="Enterprise Service Bus and Mediation Framework">Synapse</a></li> 
          <li><a href="http://tapestry.apache.org/" title="Component-based Java Web Application Framework">Tapestry</a></li> 
          <li><a href="http://tcl.apache.org/" title="Dynamic websites using TCL">TCL</a></li> 
          <li><a href="http://tiles.apache.org/" title="A templating framework for web application user interfaces">Tiles</a></li> 
          <li><a href="http://tomcat.apache.org/" title="A Java Servlet and JSP Container">Tomcat</a></li> 
          <li><a href="http://turbine.apache.org/" title="A Java Servlet Web Application Framework and associated component library">Turbine</a></li> 
          <li><a href="http://tuscany.apache.org/" title="An SCA based Service Composition Framework">Tuscany</a></li> 
          <li><a href="http://velocity.apache.org/" title="A Java Templating Engine">Velocity</a></li> 
          <li><a href="http://wicket.apache.org/" title="Component-based Java Web Application Framework.">Wicket</a></li> 
          <li><a href="http://ws.apache.org/">Web Services</a></li> 
          <li><a href="http://xalan.apache.org/" title="XSLT processors in Java and C++">Xalan</a></li> 
          <li><a href="http://xerces.apache.org/" title="XML parsers in Java, C++ and Perl">Xerces</a></li> 
          <li><a href="http://xml.apache.org/" title="XML solutions focused on the web">XML</a></li> 
          <li><a href="http://xmlbeans.apache.org/" title="XML-Java binding tool">XMLBeans</a></li> 
          <li><a href="http://xmlgraphics.apache.org/" title="Conversion from XML to graphical output">XML Graphics</a></li> 
          <li><a href="http://attic.apache.org/" title="Inactive project repository">Attic</a></li> 
      </ul>
          </div>
        </div>
        <div class="nav column prepend-1 span-12 last">
               <h6><a 
href="http://www.apache.org/foundation/">Foundation</a></h6>
  <ul>
          <li><a href="http://www.apache.org/foundation/faq.html">FAQ</a></li> 
          <li><a href="http://www.apache.org/licenses/">Licenses</a></li> 
          <li><a href="http://www.apache.org/foundation/news.html">News</a></li> 
          <li><a href="http://www.apache.org/foundation/records/">Public Records</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> 
          <li><a href="http://www.apache.org/foundation/contributing.html">Donations</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
          <li><a href="http://www.apache.org/foundation/contact.html">Contact</a></li> 
      </ul>
      <h6>Foundation Projects</h6>
  <ul>
          <li><a href="http://www.apache.org/foundation/conferences.html" title="Meetings of developers and users">Conferences</a></li> 
          <li><a href="http://www.apache.org/dev/" title="ASF Infrastructure: Operations and howto documents for PMCs and contributors">Infrastructure</a></li> 
          <li><a href="http://www.apache.org/jcp/" title="Apache and the Java Community Process">JCP</a></li> 
          <li><a href="http://www.apache.org/legal/" title="Legal Affairs">Legal Affairs</a></li> 
          <li><a href="http://www.apache.org/security/" title="Security">Security</a></li> 
          <li><a href="http://www.apache.org/travel/" title="Travel Assistance">Travel Assistance</a></li> 
      </ul>
      <h6>How it works</h6>
  <ul>
          <li><a href="http://www.apache.org/foundation/how-it-works.html">Introduction</a></li> 
          <li><a href="http://www.apache.org/foundation/how-it-works.html#meritocracy">Meritocracy</a></li> 
          <li><a href="http://www.apache.org/foundation/how-it-works.html#structure">Structure</a></li> 
          <li><a href="http://www.apache.org/foundation/how-it-works.html#roles">Roles</a></li> 
          <li><a href="http://www.apache.org/foundation/how-it-works.html#management">Collaboration</a></li> 
          <li><a href="http://www.apache.org/foundation/how-it-works.html#infrastructure">Infrastructure</a></li> 
          <li><a href="http://www.apache.org/foundation/how-it-works.html#incubator">Incubator</a></li> 
          <li><a href="http://www.apache.org/foundation/how-it-works.html#other">Other entities</a></li> 
          <li><a href="http://www.apache.org/foundation/glossary.html">Glossary</a></li> 
          <li><a href="http://www.apache.org/foundation/voting.html">Voting</a></li> 
      </ul>
      <h6><a 
href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a></h6>
  <ul>
          <li><a href="http://www.apache.org/foundation/mailinglists.html">Mailing Lists</a></li> 
          <li><a href="http://www.apache.org/dev/version-control.html">Version Control</a></li> 
          <li><a href="http://www.apache.org/dev/">Developer Info</a></li> 
      </ul>
      <h6>Download</h6>
  <ul>
          <li><a href="http://www.apache.org/dyn/closer.cgi">from a mirror</a></li> 
      </ul>
      <h6>Community</h6>
  <ul>
          <li><a href="http://www.apache.org/memorials/">Memorials</a></li> 
      </ul>
      <h6>Related Sites</h6>
  <ul>
          <li><a href="http://apachecon.com/" title="Official Apache Conference">ApacheCon</a></li> 
          <li><a href="http://feathercast.org/" title="Apache Podcasts">Feathercast</a></li> 
          <li><a href="http://planetapache.org/" title="Apache Community Blogs">PlanetApache</a></li> 
      </ul>
        </div>
      </div>
    </div>
    <div class="column span-24 footer">
      <hr/>
        <p>Copyright &#169; 2009 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
      </div>
    </div>
  </div>
</div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2002-2009
    
          The Apache Software Foundation
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </script>
    <script type="text/javascript">
      _uacct = "UA-1384591-1";
      urchinTracker();
    </script>
  </body>
</html>
