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

    <meta charset="UTF-8">
      <title>Apache TomEE 7.0.0-SNAPSHOT</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="https://www.w3.org/1999/html">

    <div class="alert-message danger">
      <strong>Caution</strong>
        Snapshot builds are not supported for production use
    </div>

    <div>
        <p>
            Snapshot builds are provided for the purpose verifying fixes and participating in the development cycle by evaluating new features and improvements and giving feedback.
            The community will happily support your use of snapshots for development purposes with the mutual understanding all builds are works in progress and subject to change.
        </p>
    </div>
    <div class="row">
        <div class="span24">&nbsp;</div>
    </div>

    <div class="page-header">
        <h1>Apache TomEE 7.0.0-SNAPSHOT
            <small>Unreleased</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>Plus</h2>

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

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

        </div>
        <div class="span12">
            <br>
            <br>
            <ul>
                <li><a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=apache-tomee&v=7.0.0-SNAPSHOT&c=webprofile&p=tar.gz">apache-tomee-7.0.0-SNAPSHOT-webprofile.tar.gz</a>
                    (<a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=apache-tomee&v=7.0.0-SNAPSHOT&c=webprofile&p=tar.gz.md5">md5</a>)
                </li>
                <li><a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=apache-tomee&v=7.0.0-SNAPSHOT&c=webprofile&p=zip">apache-tomee-7.0.0-SNAPSHOT-webprofile.zip</a>
                    (<a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=apache-tomee&v=7.0.0-SNAPSHOT&c=webprofile&p=zip.md5">md5</a>)
                </li>
            </ul>
            <br>
            <br>

            <ul>
                <li><a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=apache-tomee&v=7.0.0-SNAPSHOT&c=plus&p=tar.gz">apache-tomee-7.0.0-SNAPSHOT-plus.tar.gz</a>
                    (<a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=apache-tomee&v=7.0.0-SNAPSHOT&c=plus&p=tar.gz.md5">md5</a>)
                </li>
                <li><a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=apache-tomee&v=7.0.0-SNAPSHOT&c=plus&p=zip">apache-tomee-7.0.0-SNAPSHOT-plus.zip</a>
                    (<a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=apache-tomee&v=7.0.0-SNAPSHOT&c=plus&p=zip.md5">md5</a>)
                </li>
            </ul>

        </div>
    </div>
</section>
<div class="row">
    <div class="span24">&nbsp;</div>
</div>
<section>
    <div class="page-header">
        <h2>Apache OpenEJB 7.0.0-SNAPSHOT
            <small>Unreleased</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</p>

            <p><a href="../comparison.html">Comparison &raquo;</a></p>
        </div>
        <div class="span12">
            <h3>&nbsp;</h3>
            <ul>
                <li><a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=openejb-standalone&v=7.0.0-SNAPSHOT&p=tar.gz">openejb-standalone-7.0.0-SNAPSHOT.tar.gz</a>
                    (<a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=openejb-standalone&v=7.0.0-SNAPSHOT&p=tar.gz.md5">md5</a>)
                </li>
                <li><a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=openejb-standalone&v=7.0.0-SNAPSHOT&p=zip">openejb-standalone-7.0.0-SNAPSHOT.zip</a>
                    (<a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=openejb-standalone&v=7.0.0-SNAPSHOT&p=zip.md5">md5</a>)
                </li>
            </ul>
        </div>
    </div>

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

            <p>A version of Apache TomEE 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="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=tomee-webapp&v=7.0.0-SNAPSHOT&p=war">tomee-webapp-7.0.0-SNAPSHOT.war</a>
                    (<a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=tomee-webapp&v=7.0.0-SNAPSHOT&p=war.md5">md5</a>)
                </li>
                <li><a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=tomee-plus-webapp&v=7.0.0-SNAPSHOT&p=war">tomee-plus-webapp-7.0.0-SNAPSHOT.war</a>
                    (<a href="https://repository.apache.org/service/local/artifact/maven/redirect?r=snapshots&g=org.apache.openejb&a=tomee-plus-webapp&v=7.0.0-SNAPSHOT&p=war.md5">md5</a>)
                </li>
            </ul>
        </div>
    </div>
</section>
<div class="row">
    <div class="span24">&nbsp;</div>
</div>
<section>
    <div class="page-header">
        <h1>Changelog</h1>
    </div>

    <div class="row">
        <div class="span24">

            


        </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>
