<!DOCTYPE html>
<html lang="en">
  <head>

    <meta charset="UTF-8">
      <title>Apache TomEE 1.6.0.2</title>
    <meta name="description" content="Apache TomEE">
    <meta name="author" content="Apache TomEE">
    <meta name="google-translate-customization" content="f36a520c08f4c9-0a04e86a9c075ce9-g265f3196f697cf8f-10">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, max-age=0">

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="./../resources/css/bootstrap.css" rel="stylesheet">
    <link href="./../resources/css/prettify.css" rel="stylesheet">
    <!--link href="./../resources/css/bootstrap-mods.css" rel="stylesheet"-->
    <link href="./../resources/css/main.css" rel="stylesheet">
    <link href="./../resources/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet">

    <script type="text/javascript">
        var t = encodeURIComponent(document.title.replace(/^\s+|\s+$/g,""));
        var u = encodeURIComponent(""+document.URL);
    
      function fbshare () {
          window.open(
                  "http://www.facebook.com/sharer/sharer.php?u="+u,
                  'Share on Facebook',
                  'width=640,height=426');
      };
      function gpshare () {
          window.open(
                  "https://plus.google.com/share?url="+u,
                  'Share on Google+',
                  'width=584,height=385');
      };
      function twshare () {
          window.open(
                  "https://twitter.com/intent/tweet?url="+u+"&text="+t,
                  'Share on Twitter',
                  'width=800,height=526');
      };
      function pinshare () {
          window.open("//www.pinterest.com/pin/create/button/?url="+u+"&media=http%3A%2F%2Ftomee.apache.org%2Fresources%2Fimages%2Ffeather-logo.png&description="+t,
                  'Share on Pinterest',
                  'width=800,height=526');
      };
    </script>

    <!-- Le fav and touch icons -->
    <link rel="shortcut icon" href="./../favicon.ico">
    <link rel="apple-touch-icon" href="./../resources/images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="./../resources/images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="./../resources/images/apple-touch-icon-114x114.png">

    <script src="./../resources/js/prettify.js" type="text/javascript"></script>
    <script src="./../resources/js/jquery-latest.js"></script>
    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
    <script src="./../resources/js/common.js"></script>
    <script src="./../resources/js/prettyprint.js"></script>
    <!--script src="//assets.pinterest.com/js/pinit.js" type="text/javascript" async></script//-->
    
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-2717626-1']);
      _gaq.push(['_setDomainName', 'apache.org']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
  </head>

  <body>

    <div class="topbar" data-dropdown="dropdown">
      <div class="fill">
        <div class="container">
          <a class="brand" href="./../index.html">Apache TomEE</a>
          <ul class="nav">
              <li class="dropdown">
                  <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                  Apache
                      <b class="caret"></b>
                  </a>
                  <ul class="dropdown-menu">
                     <!-- <li><a href="./../misc/whoweare.html">Who we are?</a></li> -->
                     <!-- <li><a href="./../misc/heritage.html">Heritage</a></li> -->
                     <li><a href="http://www.apache.org">Apache Home</a></li>
                     <!-- <li><a href="./../misc/resources.html">Resources</a></li> -->
                     <li><a href="./../misc/contact.html">Contact</a></li>
                     <li><a href="./../misc/legal.html">Legal</a></li>
                     <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                     <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                     <li class="divider"/>
                     <li><a href="http://www.apache.org/security">Security</a></li>
                  </ul>
              </li>
              <li><a href="./../index.html">Home</a></li>
              <li><a href="./../downloads.html">Downloads</a></li>
              <li><a href="./../documentation.html">Documentation</a></li>
              <li><a href="./../examples-trunk/index.html">Examples</a></li>
              <li><a href="./../support.html">Support</a></li>
              <li><a href="./../contribute.html">Contribute</a></li>
              <li><a href="./../security/index.html">Security</a></li>
          </ul>

            <!-- Google CSE Search Box Begins  -->
            <FORM class="pull-right" id="searchbox_010475492895890475512:_t4iqjrgx90" action="http://www.google.com/cse">
                <INPUT type="hidden" name="cx" value="010475492895890475512:_t4iqjrgx90">
                <INPUT type="hidden" name="cof" value="FORID:0">
                <INPUT size="18" width="130" style="width:130px" name="q" type="text" placeholder="Search">
            </FORM>
            <!--<SCRIPT type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>-->
            <!-- Google CSE Search Box Ends -->
        </div>
      </div>
    </div>

    <div class="container">
    
<section xmlns="http://www.w3.org/1999/html">

    <div class="alert-message">
      <strong>Feedback Welcome!</strong>
        We use your feedback to focus efforts, develop new features, and to make TomEE better for everyone.  <a href="mailto:users@tomee.apache.org?subject=Feedback on TomEE 1.6.0.2&body=We'd%20like%20to%20hear%20about%20anything%20you'd%20like%20to%20tell%20us.%20%20If%20you're%20short%20on%20ideas%2C%20here%20are%20some%3A%0A%0A%20-%20Ways%20we%20can%20speed%20up%20or%20improve%20your%20ability%20to%20evaluate%20TomEE%0A%20-%20Anything%20you%20found%20difficult%20or%20inconvenient%20about%20using%20TomEE%0A%20-%20Documentation%20you%20would%20like%20to%20see%0A%20-%20Features%20you%20would%20like%20to%20have%0A%20-%20Anything%20in%20general%20to%20improve%20TomEE%20or%20help%20us%20grow%0A%0AKeep%20in%20mind%20that%20out%20of%20every%20100%20people%20that%20try%20something%20out%2C%20maybe%20one%20will%20actually%20post%20about%20it.%20%20Feel%20incredibly%20encouraged%20to%20let%20us%20know%20about%20your%20experiences%20with%20TomEE%20even%20if%20you%20think%20we've%20heard%20it%20a%20hundred%20times.%20%20Odds%20are%20we%20have%20not%20heard%20it%20and%2C%20if%20we%20have%2C%20the%20most%20requested%20things%20are%20done%20first.%20%20So%20definitely%20let%20us%20know!%0A%0AApache%20TomEE%20is%20free%2C%20but%20you%20can%20pay%20us%20with%20feedback%20%3A)%0A%0ABest%20regards%2C%0AThe%20Apache%20TomEE%20community%0A">Help us grow!</a>
    </div>

    <div class="page-header">
        <h1>Apache TomEE 1.6.0.2
            <small>May 2014</small>
        </h1>
    </div>

    <div class="row">
        <div class="span4">
            <h2>Web Profile</h2>

            <p>Apache TomEE Web Profile delivers Servlets, JSP, JSF, JTA, JPA, CDI, Bean Validation and EJB Lite</p>

            <p><a href="../comparison.html">Comparison &raquo;</a></p>
            <br>
            <h2>JAX-RS</h2>

            <p>Apache TomEE JAX-RS delivers the Web Profile plus JAX-RS</p>

            <p><a href="../comparison.html">Comparison &raquo;</a></p>
            <br>
            <h2>Plus</h2>

            <p>Apache TomEE Plus delivers all that is in the Web Profile and JAX-RS, plus EJB Full, Java EE Connector Architecture, JMS and JAX-WS.</p>

            <p><a href="../comparison.html">Comparison &raquo;</a></p>

        </div>
        <div class="span5">
            <h2>
                <small>Java EE6 Certified</small>
            </h2>
            <ul>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-webprofile.tar.gz">apache-tomee-1.6.0.2-webprofile.tar.gz</a><br>
                    (<a href="http://www.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip.txt">contents</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-webprofile.tar.gz.asc">asc</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-webprofile.tar.gz.md5">md5</a>)
                </li>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip">apache-tomee-1.6.0.2-webprofile.zip</a><br>
                    (<a href="http://www.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip.txt">contents</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip.asc">asc</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip.md5">md5</a>)
                </li>
            </ul>
            <br>
            <h2>
                <small>Java EE6 Certified</small>
            </h2>
            <ul>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-jaxrs.tar.gz">apache-tomee-1.6.0.2-jaxrs.tar.gz</a><br>
                    (<a href="http://www.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip.txt">contents</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-jaxrs.tar.gz.asc">asc</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-jaxrsgz.md5">md5</a>)
                </li>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip">apache-tomee-1.6.0.2-jaxrs.zip</a><br>
                    (<a href="http://www.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip.txt">contents</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip.asc">asc</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip.md5">md5</a>)
                </li>
            </ul>
            <br>

            <h2>
                <small>NOT Java EE6 Certified</small>
            </h2>
            <ul>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-plus.tar.gz">apache-tomee-1.6.0.2-plus.tar.gz</a><br>
                    (<a href="http://www.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-plus.zip.txt">contents</a> -
                    <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-plus.tar.gz.asc">asc</a>  - <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-plus.tar.gz.md5">md5</a>)
                </li>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-plus.zip">apache-tomee-1.6.0.2-plus.zip</a><br>
                    (<a href="http://www.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-plus.zip.txt">contents</a> -
                    <a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-plus.zip.asc">asc</a> - <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/apache-tomee-1.6.0.2-plus.zip.md5">md5</a>)
                </li>
            </ul>

        </div>
        <div class="span7">
            <div class="hero-unit">
                <iframe width="280" height="233" src="http://www.youtube.com/embed/Lr8pxEACVRI" frameborder="0" allowfullscreen></iframe>
            </div>
        </div>
    </div>
</section>
<div class="row">
    <div class="span24">&nbsp;</div>
</div>
<section>
    <div class="page-header">
        <h2>Apache OpenEJB 4.6.0.1
            <small>April 2013</small>
        </h2>
    </div>

    <div class="row">
        <div class="span4">
            <h3>Standalone</h3>

            <p>An "EJB" Server that can be run as a separate, standalone, server process. Contains EJB Full, CDI, JPA, JMS, JAX-WS, JAX-RS</p>

            <p><a href="../comparison.html">Comparison &raquo;</a></p>
        </div>
        <div class="span12">
            <h3>&nbsp;</h3>
            <ul>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-standalone-4.6.0.1.tar.gz">openejb-standalone-4.6.0.1.tar.gz</a> (<a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-standalone-4.6.0.1.tar.gz.asc">asc</a> <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-standalone-4.6.0.1.tar.gz.md5">md5</a>)
                </li>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-standalone-4.6.0.1.zip">openejb-standalone-4.6.0.1.zip</a> (<a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-standalone-4.6.0.1.zip.asc">asc</a> <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-standalone-4.6.0.1.zip.md5">md5</a>)
                </li>
            </ul>
        </div>
    </div>

    <div class="row">
        <div class="span4">
            <h3>Drop-in WARs</h3>

            <p>A version of Apache OpenEJB that can be dropped into any Tomcat 7.x install effectively creating your own Apache TomEE Web Profile or Apache TomEE Plus.</p>
        </div>
        <div class="span12">
            <h3>&nbsp;</h3>
            <ul>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/tomee-webapp-1.6.0.2.war">tomee-webapp-1.6.0.2.war</a> (<a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/tomee-webapp-1.6.0.2.war.asc">asc</a> <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/tomee-webapp-1.6.0.2.war.md5">md5</a>)
                </li>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/tomee-plus-webapp-1.6.0.2.war">tomee-plus-webapp-1.6.0.2.war</a>
                    (<a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/tomee-plus-webapp-1.6.0.2.war.asc">asc</a> <a
                            href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/tomee-plus-webapp-1.6.0.2.war.md5">md5</a>)
                </li>
            </ul>
        </div>
    </div>
</section>
<div class="row">
    <div class="span24">&nbsp;</div>
</div>
<section>
    <div class="page-header">
        <h2>Other</h2>
    </div>

    <div class="row">
        <div class="span4">
            <h3>Source</h3>

            <p>Should you want to build any of the above binaries, this source bundle is the right one and covers them all.</p>

        </div>
        <div class="span12">
            <h3>&nbsp;</h3>
            <ul>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-4.6.0.1-source-release.zip">openejb-4.6.0.1-source-release.zip</a> (<a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-4.6.0.1-source-release.zip.asc">asc</a> <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/openejb-4.6.0.1-source-release.zip.md5">md5</a>)
                </li>
            </ul>
        </div>
    </div>
    <div class="row">
        <div class="span4">
            <h3>Examples</h3>

            <p>Currently, we have over 80 examples of various aspects of Java EE 6 ranging from EJB, CDI, JAX-RS and more.  If you're learning Java EE, this is your secret weapon.</p>
        </div>
        <div class="span12">
            <h3>&nbsp;</h3>
            <ul>
                <li><a href="examples-trunk">Browse Online</a></li>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/examples-4.6.0.1-src.tar.gz">examples-4.6.0.1-src.tar.gz</a> (<a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/examples-4.6.0.1-src.tar.gz.asc">asc</a> <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/examples-4.6.0.1-src.tar.gz.md5">md5</a>)
                </li>
                <li><a href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/examples-4.6.0.1-src.zip">examples-4.6.0.1-src.zip</a> (<a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/examples-4.6.0.1-src.zip.asc">asc</a> <a
                        href="http://archive.apache.org/dist/tomee/tomee-1.6.0.2/examples-4.6.0.1-src.zip.md5">md5</a>)
                </li>
            </ul>
        </div>
    </div>
</section>



        <div id="edit" class="modal hide fade in" style="display: none; ">
            <div class="modal-header">
                <a class="close" data-dismiss="modal">x</a>

                <h3>Thank you for contributing to the documentation!</h3>
            </div>
            <div class="modal-body">
                <h4>Any help with the documentation is greatly appreciated.</h4>
                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
                <!--[if gt IE 6]>
                <h4>Internet Explorer Users</h4>
                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
                <![endif]-->

            </div>
            <div class="modal-footer">
                Do you have an Apache ID?
                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
            </div>
        </div>
        <script src="./../resources/js/bootstrap-modal.js"></script>

        <footer>
            <p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
                Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation.
                All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
        </footer>

    </div> <!-- /container -->

    <!-- Javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="./../resources/js/bootstrap-dropdown.js"></script>

  </body>
</html>
